2013-12-16 73 views
0

如果用户输入abc.com,我希望基于WordPress的主页自动从abc.com/#about开始。.htaccess更新后的重定向循环

我加入以下到我的.htaccess文件:

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

的URL被改变,但浏览器(Chrome)给予错误:“此网页有重定向循环”。

我得到同样的行为,如果我用

RewriteCond %{REQUEST_URI} !=/#about 

RewriteCond %{REQUEST_URI} !=#about 

这可能是因为网址中包含#,但我不知道。

在此先感谢。

+0

谢谢你的非常快速的响应! 来自anubhava的解释是有道理的,但是因此它很难创建一个基于URL的条件来停止循环。 Cookie方法正常工作,现已实施! :-) 再次感谢。 – user3106496

回答

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] 
0

试试这个:

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

#一部分置换为URL编码形式%23。并且必须重写的部分应该是$而不是^$

+1

在我看来,这是行不通的,因为#后面的URI部分没有传递给服务器。 –

+0

在这里,用户只需输入'abc.com'(用户输入的uri中没有#),我们需要重定向到'abc.com /#about' – Hariprasad

1

问题是,对于URL http://domain.com/#about浏览器不哈希#后发送URI路径,服务器和服务器仍然会看到网址为http://domain.com/这将使它再次重定向并最终浏览器显示循环错误给你。

你可以试试这个规则停止循环:

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

否则如果index.php是默认的文件,然后:

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