2012-12-28 51 views
1

在专门针对特定URL编写重写规则以从中删除尾部斜杠时,会发生无限重定向循环。从URL中删除/添加尾部斜杠时发生重定向循环

以下是我想要的代码在.htaccess代码:

RewriteRule ^abc.php /abc/ [R=301,L,NC,QSA] 
RewriteRule ^abc/ abc.php [NC,QSA] 

我试图做一个301重定向到abc.php ABC /但想为ABC /与abc.php的只有内容。想要专门为此网址编写规则。

+0

如果我理解你是对的,你想隐藏URL中的'.php'来表示这个特殊情况,不是吗? – shawndreck

+0

是的,但我也想做一个301重定向到abc /并且只想将这个规则应用于abc.php –

+0

如何反转规则的顺序?如'RewriteRule^abc.php/abc/[R = 301,L,NC,QSA]'之前的'RewriteRule^abc/abc.php [NC,L,QSA]'。由于所需的URL是/ abc /而规则是从顶部向下读取的 – shawndreck

回答

2

可以打破无限循环,如果你检查HTTP请求线(见herehere)由浏览器与RewriteCond发送到服务器,此外,你的反规则的顺序:

RewriteRule ^abc/ abc.php [L,QSA] 
RewriteCond %{THE_REQUEST} ^GET\ /abc\.php 
RewriteRule ^abc.php$ /abc/ [R=301, QSA] 
+0

我可以在这些URL都有GET和POST请求,因此它可以成为一个问题。 –

+0

难道你不能为POST案例添加一个新条件,并将这两个条件与[OR]标志结合? – Vicent

+0

是啊..那工作!谢谢 –

0

试试这个:

 
RewriteEngine On 

RewriteRule ^abc/? abc.php [NC,L,QSA] 
RewriteRule ^abc.php /abc/ [R=301,QSA] 

希望它能帮助!