.htaccess更新后重定向循环

时间:2013-12-16 08:09:58

标签: .htaccess loops redirect

如果用户输入abc.com,我希望我的基于WordPress的主页自动从abc.com/#about开始。

我已将以下内容添加到我的.htaccess文件中:

RewriteBase /
RewriteCond %{REQUEST_URI} !=about 
RewriteRule ^$ /#about [L,R,NE]

网址已更改,但浏览器(Chrome)会显示错误:“此网页有重定向循环”。

如果我使用

,我会得到相同的行为
RewriteCond %{REQUEST_URI} !=/#about

RewriteCond %{REQUEST_URI} !=#about 

可能是因为网址包含#,但我不确定。

提前致谢。

3 个答案:

答案 0 :(得分:1)

一种解决方案是使用cookie。您可以在使用#重定向到URI后设置cookie,然后将其删除。试试:

RewriteEngine On
RewriteCond %{HTTP_COOKIE} (^|\s)test=1($|\s)
RewriteRule $ - [L,CO=test:0:.your_site.com:-1]
RewriteRule $ /#about [L,R,NE,CO=test:1:.your_site.com]

答案 1 :(得分:1)

问题是,对于URL http://domain.com/#about,浏览器不会在哈希#之后向服务器发送URI路径,并且服务器仍然会将URL视为http://domain.com/,这将使其再次重定向并最终浏览器显示循环错误。

您可以尝试此规则来停止循环:

RewriteRule ^$ /index.html#about [L,NE,R]

或者如果index.php是您的默认文件,则:

RewriteRule ^$ /index.php#about [L,NE,R]

答案 2 :(得分:0)

试试这个:

RewriteBase /
RewriteCond %{REQUEST_URI} !=about 
RewriteRule $ /%23about [L,R,NE]

#部分已替换为网址编码形式%23。必须重写的部分应为$,而不是^$