2012-01-22 78 views
0

我正在嘗試301將具有.php擴展名的網頁重定向到其無擴展版本。使用以下規則,具有查詢參數的頁面失敗(signup.php?login = true)或導致重定向循環。將.php重定向到僅用於非動態URL的無擴展名網址

RewriteCond %{THE_REQUEST} ^[A-Z]+\ /([^/]+/)*[^.#?\ ]+\.php([#?][^\ ]*)?\ HTTP/ 
RewriteRule ^(([^/]+/)*[^.]+)\.php$ /$1 [R=301] 

我爲此要排除動態URL(它似乎沒有任何意義重寫它們)。我已經編寫了下面的代碼,但這種情況似乎仍然與動態URL匹配。

RewriteCond %{THE_REQUEST} ^[A-Z]+\ /([^/]+/)*[^.#?\ ]+\.php\ HTTP/ 
RewriteRule ^(([^/]+/)*[^.]+)\.php$ /$1 [R=301] 

任何人都可以幫助我調整我的狀況,以防止動態url被重寫。

回答

1

請嘗試以下操作。確保\.php\與'[NC]

RewriteEngine on 
RewriteBase/

#any url with .php and no anchor or query string 
RewriteCond %{THE_REQUEST} ^[A-Z]+\ /([^\ ]+)\.php\ [NC] 
RewriteRule^/%1 [R=301] 
之間有2個空格
相關問題