[英]301 redirect with query parameters and ~ in URL
我有一個重定向問題,我想將帶有查詢參數的 url 完全重定向到另一個 PDF,例如:
原文網址: https : //www.foo.bar.com/~/bar.pdf?la
重定向網址: https : //www.bar.foo.com/foo.pdf
目前我的重寫規則如下所示:
RewriteRule ^/~/bar.pdf?la https://www.bar.foo.com/foo.pdf [R=301,L,NC]
我怎樣才能寫一個 301 重定向,同時考慮波浪號和查詢參數?
在此先感謝您的幫助!
首先你的規則RewriteRule ^/~/bar.pdf?la https://www.bar.foo.com/foo.pdf [R=301,L,NC]
有幾個問題。
首先, RewriteRule ^/
這里不適用,所以RewriteRule ^
就足夠了。 其次,你應該像這個RewriteRule ^\\~
~
一樣轉義~
最后,不要像bar.pdf?la
這樣使用RewriteRule
編寫查詢字符串,因為它不是URI
。
該行應如下所示:
RewriteRule ^\~/bar.pdf https://www.bar.foo.com/foo.pdf [R=301,L,NC]
但是查詢字符串可能會附加到新目標,以防止添加?
在目標結束時:
RewriteRule ^\~/bar.pdf https://www.bar.foo.com/foo.pdf? [R=301,L,NC]
如果要使用查詢字符串值,可以在此之前添加條件以使用它:
RewriteCond %{QUERY_STRING} ^(.*)$
您可以將^(.*)$
更改為您想要的任何內容,並且可以在目標中使用它,如下例所示:
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^(.*)$ https://www.whatever.com/%1/$1 [R=301,L,NC]
所以, %1
指的是這個條件RewriteCond %{QUERY_STRING} ^(.*)$
和$1
指的是這個條件RewriteRule ^(.*)$
等等。
您需要使用RewriteCond指令來檢查 url 查詢字符串。 你不能在RewriteRule
做到這一點。 您網址中的查詢字符串是la
。
RewriteEngine on
RewriteCond ℅{QUERY_STRING} ^la$ [NC]
RewriteRule ^.*bar\.pdf$ /foo.pdf? [L,R=301]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.