嗨,我有一些這樣的網址
/dvr-model/110
/dvr-model/110/spider
/dvr-model/110/spencer
/dvr-model/110/whale/47
我正在這樣做
Redirect 301 /dvr-model/110 https://newurl
Redirect 301 /dvr-model/110/spider https://newurl
Redirect 301 /dvr-model/110/spencer https://newurl
Redirect 301 /dvr-model/110/whale/47 https://newurl
現在第一個重定向作業正常,但所有其他 URL 都給出未找到錯誤。我在這里做錯了什么?
uj5u.com熱心網友回復:
但所有其他 URL 都給出未找到錯誤。
具體來說,如果您請求,/dvr-model/110/spider那么第一條規則會將請求重定向到https://newurl/spider(大概是 404)。
該Redirect指令是前綴匹配的,匹配后的所有內容都被復制到目標 URL 的末尾。所以在上面的例子/spider中被附加到目標 URL 的末尾。
您需要顛倒您的規則,以便最具體的規則在前,或者至少將第一個(通用)規則放在最后。
例如:
Redirect 301 /dvr-model/110/spider https://newurl
Redirect 301 /dvr-model/110/spencer https://newurl
Redirect 301 /dvr-model/110/whale/47 https://newurl
Redirect 301 /dvr-model/110 https://newurl
或者使用RedirectMatch, 使用正則運算式而不是簡單的前綴匹配來匹配確切的 URL,例如:
RedirectMatch 301 ^/dvr-model/110$ https://newurl
RedirectMatch 301 ^/dvr-model/110/spider$ https://newurl
RedirectMatch 301 ^/dvr-model/110/spencer$ https://newurl
RedirectMatch 301 ^/dvr-model/110/whale/47$ https://newurl
可以使用正則運算式替換將其簡化為單個規則:
RedirectMatch 301 ^/dvr-model/110(/spider|/spencer|/whale/47)?$ https://newurl
您需要在測驗之前清除瀏覽器快取,并首先使用 302(臨時)重定向進行測驗,以避免潛在的快取問題。
參考:
- https://httpd.apache.org/docs/2.4/mod/mod_alias.html#redirect
- https://httpd.apache.org/docs/2.4/mod/mod_alias.html#redirectmatch
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/427112.html
