簡體   English   中英

使用查詢參數和 ~ 在 URL 中的 301 重定向

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

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