Dot-Htaccess
.htaccess 301 重定向刪除從網址
我想刪除'
$$ ’ and ’ $$’ 來自 URL 並重定向到正確的連結。 這是一個範例網址:
/forums/garage-150/cool-cars-sightings-[archived]-7610/index127.html
需要重定向到:
/forums/garage-150/cool-cars-sightings-archived-7610/index127.html
這是我到目前為止所寫的,但仍然沒有工作..
Options +FollowSymlinks Options +Indexes RewriteEngine on RewriteRule ^/forums/(.*)/(.+)\[(.+)\](.+)/(.+)$ /forums/$1/$2$3$4/$5 [R=301]
您的指令看起來不錯,除非它在,
.htaccess
那麼您需要從RewriteRule
模式中刪除斜杠前綴。例如:RewriteRule ^forums/(.+)/(.+)\[(.+)\](.+)/(.+)$ /forums/$1/$2$3$4/$5 [R=301,L]
RewriteRule
目錄上下文(包括)中的指令.htaccess
匹配 URL-path減去 directory-prefix。目錄前綴總是以斜杠結尾,因此RewriteRule
模式匹配的 URL 路徑永遠不會以斜杠開頭。
L
如果您(計劃)有更多指令,您可能需要添加標誌。(我還將第一個擷取的組從 更改.*
為.+
,因為這裡不可能進行零寬度匹配。更新:
我放置此程式碼的 htaccess 位於
/
目錄中。目錄****裡也.htaccess
有/forums
如果子目錄中有一個現有
.htaccess
文件/forums
也使用 mod_rewrite,那麼(預設情況下)這將完全覆蓋上面的指令(在你的根.htaccess
文件中)。甚至不會處理上述指令。解決此問題的最簡單方法是將上述指令移動到
/forums/.htaccess
文件中(靠近頂部)。由於此重定向特定於論壇,因此這似乎也是最合乎邏輯的方法。但是,您還需要將RewriteRule
模式更改為:RewriteRule ^(.+)/(.+)\[(.+)\](.+)/(.+)$ /forums/$1/$2$3$4/$5 [R=301,L]