
我遇到了重寫映射問題。
我想做的是將數千個幾乎隨機的舊網址重新導向到新網址。我將手動建立地圖,但我需要此程式碼才能運作。
RewriteCond %{HTTP_HOST}%{REQUEST_URI}\?%{QUERY_STRING} (^example\.com.abcd.cat_4)(.*)
RewriteRule .* ${url_rewrite_map:$1|NOTFOUND}? [R=301,L]
我希望地圖看起來像這樣:
example.com/abcd/cat_4 http://example.com/345_exact_address_of_page
舊的網址看起來像:
我希望他們重寫為:
我嘗試了很多東西,但我無法讓它工作......你能幫我嗎?
答案1
您在映射中使用 $1 作為查找鍵,但該參數僅保存您在 RewriteRule 中捕獲的內容。您在 RewriteCond 中捕獲的字串將在 %1、%2 等中捕獲...
所以你應該使用類似的東西:
RewriteCond %{HTTP_HOST} (^example\.com)
RewriteCond %{REQUEST_URI} (/abcd/cat_4)
RewriteRule .* ${url_rewrite_map:%1%2|NOTFOUND} [R=301,L]
答案2
好的,我成功了。對其他人來說,這是解決方案。
RewriteCond %{HTTP_HOST}%{REQUEST_URI}\?%{QUERY_STRING} (^example\.com.abcd.abcd=.*)
RewriteRule .* ${url_rewrite_map:%1|$1}? [R=301,L]
回應 Krist van Besien 的回答:我相信你不能使用 %1%2%3 作為使用前一行、前兩行等。 。但無論如何謝謝你,你把我推向了好的方向:)