【问题标题】:How do I write a rewrite rule to htaccess?如何将重写规则写入 htaccess?
【发布时间】:2012-04-11 08:32:48
【问题描述】:

我需要重定向任何 www.mysite.com/anything/anythingwww.mysite.com/anything 并排除 www.mysite.com/应用程序

www.mysite.com/app

当然我要排除是可选的。这只是一个额外的重定向,我想这会花费额外的时间,不过最好将其排除在外。

我找到了这些基本示例http://www.yourhtmlsource.com/sitemanagement/urlrewriting.html 并做到了这一点:

RewriteRule ^*/*/$ /app
RewriteRule ^*/$ /app

但它不起作用,而且我仍然不知道如何排除 /app

请帮忙?

更新

我认为 .* 代表正则表达式中的 0 个或多个点,我的示例完全错误,我需要 anything syntax 而不是您在答案中使用的点。

【问题讨论】:

    标签: php regex .htaccess mod-rewrite redirect


    【解决方案1】:

    你可以试试这个:

    Options +FollowSymlinks
    RewriteEngine on
    RewriteCond %{REQUEST_URI} !^/app$ 
    RewriteRule ^.*$ /app [L]
    

    【讨论】:

      【解决方案2】:

      这对你有用吗?

      RewriteEngine on
      RewriteRule ^.*$ app/ [L]
      

      不幸的是,它没有排除正确的路径。不过还是先试试吧。

      【讨论】:

      • .* 当然是正则表达式,对此感到抱歉。 \.* 代表点数。* 代表一切。取自:easymodrewrite.com/notes-last L 标志将告诉 Apache 停止处理该请求的重写规则。现在通常没有意识到的是,它现在对新的、重写的文件名发出新请求,并再次开始处理重写规则。所以这对你来说可能是不必要的。
      【解决方案3】:

      将此代码放入您的 .htaccess 中 DOCUMENT_ROOT 下:

      Options +FollowSymLinks -MultiViews
      # Turn mod_rewrite on
      RewriteEngine On
      RewriteBase /
      
      RewriteRule ^(?!app/).*$ app [L,NC]
      

      上面 RewriteRule 中的负前瞻会将所有内容重定向,除了以 /app/ 开头的 URI 到 /app

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-04-10
        • 2011-11-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多