【问题标题】:Htaccess: trying to redirect everything to directoryHtaccess:尝试将所有内容重定向到目录
【发布时间】:2015-09-25 13:46:36
【问题描述】:

我正在尝试编写一个 htaccess 规则以将所有内容重定向到 /admin,除非它是 /users/*

这是我目前所拥有的,但是有一个重定向循环,我不知道为什么:

<IfModule mod_rewrite.c>

    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On

    RewriteCond %{REQUEST_URI} !^/admin [NC]
    RewriteCond %{REQUEST_URI} !^/users [NC]
    RewriteRule ^(.*)$ /admin [R=301,L,NC]

    # Redirect Trailing Slashes...
    RewriteRule ^(.*)/$ /$1 [L,R=301]
    RewriteRule ^sitemap.xml$ /sitemap [L,P]


    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

【问题讨论】:

    标签: php regex .htaccess mod-rewrite


    【解决方案1】:

    使用THE_REQUEST 变量而不是REQUEST_URI 作为REQUEST_URI 的值将根据您的最后一条规则更改为index.php,这将使该规则再次触发:

    RewriteCond %{THE_REQUEST} !\s/+(users|admin)[/\s?] [NC]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ /admin [R=301,L]
    

    并确保清除浏览器缓存。

    【讨论】:

    • 这部分工作,虽然它也重定向 js、css、png 等。
    • 当然可以,因为您没有避免重定向cs/js/css等的要求。现在尝试编辑规则。
    • 抱歉没有具体说明,它现在正在工作,非常感谢:)
    【解决方案2】:

    问题是您在这些条件之间使用了 OR:

    RewriteCond %{REQUEST_URI} !^/admin$ [NC]
    RewriteCond %{REQUEST_URI} !^/users$ [NC]
    RewriteRule ^(.*)$ /admin [R=301,L,NC]
    

    【讨论】:

      【解决方案3】:

      您有几个问题,首先您需要从第一个 RewriteCond 中删除 OR,因为它会尝试匹配两个规则并从两者末尾删除 $

      RewriteEngine on
      
      RewriteCond %{REQUEST_URI} !^/admin [NC]
      RewriteCond %{REQUEST_URI} !^/users [NC]
      RewriteRule ^(.*)$ /users [R=301,L,NC]
      

      作为一个目录,REQUEST_URI 将是 /users/ 而不是 /users 并且 $ 告诉它这是 REQUEST_URI 字符串的结尾,使其完全匹配。

      由于它是 301 重定向,某些浏览器可能会缓存此重定向(Firefox 在我的 PC 上做了,但 Chrome 没有)使其更难调试。

      【讨论】:

      • 我刚刚在以前从未访问过该网站的浏览器中尝试过这个,很遗憾它没有解决问题。
      • 我已经用完整的 htaccess 更新了我的问题,以便您查看是否有其他任何影响它。
      猜你喜欢
      • 1970-01-01
      • 2014-07-03
      • 2013-09-23
      • 2014-02-21
      • 2011-03-08
      • 2012-01-15
      • 1970-01-01
      • 2019-11-29
      • 2010-10-06
      相关资源
      最近更新 更多