2012-12-28 79 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] 

希望它能幫助!