我正在處理的網站上有問題,我有 2 個網址,url1
https://www.fakeurl/fr/histoires-d-art/interview-peintre-anne-baudequin
和 url2
https://www.fakeurl/fr/module/_edito/EditoContent?slug=interview-peintre-anne-baudequin
兩個 url 都顯示相同的內容,但我想使用 htaccess 將 url2 重定向到 url1,我在 htaccess 中撰寫的代碼不起作用,我不明白為什么。就是這個
redirect 301 /fr/module/_edito/EditoContent?slug=interview-peintre-anne-baudequin https://www.fakeurl/fr/histoires-d-art/interview-peintre-anne-baudequin
uj5u.com熱心網友回復:
我終于自己弄明白了,我不得不將我的代碼更改為這個才能作業。
RewriteCond %{THE_REQUEST} ^(GET|POST)\ /fr/module/_edito/EditoContent\?slug=interview-peintre-anne-baudequin\ HTTP
RewriteRule ^ /fr/histoires-d-art/interview-peintre-anne-baudequin? [L,R=301]
uj5u.com熱心網友回復:
mod_aliasRedirect指令僅匹配 URL 路徑,而不匹配問題字串,因此上述內容與請求的 URL 不匹配。
您需要將 mod_rewrite 與與QUERY_STRING服務器變數(或THE_REQUEST)匹配的附加條件一起使用。但是,您還需要注意重定向回圈,因為我假設您也在使用前端控制器(內部重寫 URL1)。
請在.htaccess檔案頂部嘗試以下操作:
# Redirect URL2 to URL1
RewriteCond %{THE_REQUEST} ^[A-Z]{3,7}\s/fr/module/_edito/EditoContent\?slug=interview-peintre-anne-baudequin\sHTTP [NC]
RewriteRule ^ /fr/histoires-d-art/interview-peintre-anne-baudequin [QSD,R=301,L]
THE_REQUEST 包含請求頭的第一行,并且在內部重寫請求時不會改變。
該QSD標志是從重定向回應中洗掉原始查詢字串所必需的。
首先使用 302(臨時)重定向進行測驗以避免潛在的快取問題。
更新:修復了正則運算式以反斜杠轉義文字?并在RewriteRule 替換字串中添加斜杠前綴。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/398112.html
