Dot-Htaccess

.htaccess 301 重定向刪除從網址

  • August 14, 2018

我想刪除'

$$ ’ 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]

引用自:https://serverfault.com/questions/926164