簡體   English   中英

參數中帶有正斜杠的htaccess重定向301不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM