如果用户输入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
可能是因为网址包含#,但我不确定。
提前致谢。
答案 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
。必须重写的部分应为$
,而不是^$