[英]htaccess redirect 301 with forward slash in parameters won't work
到目前為止,我已經進行了一些研究,但是找不到解決方案。 我有一個在URL上具有舊文件結構的客戶:
/index.php?process=views/article.php&articleId=44102
應該重定向到該URL:
/news/title-of-article/
我發現我的htacces文件中可能需要此文件:
RewriteCond %{QUERY_STRING} &articleId=44102 [NC]
RewriteRule .* /news/title-of-article/ [R=301,L]
當我使用完整的網址進行測試時,它不會重定向。 但是當我省略這樣的正斜杠時:
/index.php?process=viewsarticle.php&articleId=44102
它重定向很好。 因此,我認為這里是正斜杠。
我不是設置.htaccess文件的專家,這讓我發瘋了,因為看起來我有正確的解決方案,但是不知道為什么正斜杠阻止了重定向。
如果您不能用最終的解決方案來回答,我將不勝感激,因為我有某種工具(網站,軟件等)可以用來詳細測試這些重寫條件。 也許有諸如正則表達式測試器之類的東西可用於正則表達式,但僅適用於RewriteCond和RewriteRules,我可以自己弄清楚。
預先感謝瑪麗安
問題是您沒有在重寫的URI中剝離QUERY_STRING,並且由於該結果URL還包含QUERY_STRING
作為process=views/article.php&articleId=44102
並且它再次與規則匹配,從而導致重定向循環。
將規則更改為此:
RewriteCond %{QUERY_STRING} &articleId=44102 [NC]
RewriteRule .* /news/title-of-article/? [R=301,L]
?
最后將刪除現有的查詢字符串。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.