301 重定向查询参数和 ~ 在 URL
301 redirect with query parameters and ~ in URL
我有一个重定向问题,我想将带有查询参数的 url 完全重定向到另一个 PDF,例如:
原文URL:
https://www.foo.bar.com/~/bar.pdf?la
重定向 URL:
https://www.bar.foo.com/foo.pdf
目前我的重写规则如下图:
RewriteRule ^/~/bar.pdf?la https://www.bar.foo.com/foo.pdf [R=301,L,NC]
如何编写同时考虑波浪号和查询参数的 301 重定向?
在此先感谢您的帮助!
你需要使用RewriteCond
检查 url 查询字符串的指令。你不能在 RewriteRule
中这样做。 url 中的查询字符串是 la
.
RewriteEngine on
RewriteCond ℅{QUERY_STRING} ^la$ [NC]
RewriteRule ^.*bar\.pdf$ /foo.pdf? [L,R=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]
但是查询字符串可能附加到新目标,以防止在目标末尾添加 ?
this :
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/ [R=301,L,NC]
所以,%1
指的是这个条件RewriteCond %{QUERY_STRING} ^(.*)$
,</code>指的是这个条件<code>RewriteRule ^(.*)$
等等。
我有一个重定向问题,我想将带有查询参数的 url 完全重定向到另一个 PDF,例如:
原文URL: https://www.foo.bar.com/~/bar.pdf?la
重定向 URL: https://www.bar.foo.com/foo.pdf
目前我的重写规则如下图:
RewriteRule ^/~/bar.pdf?la https://www.bar.foo.com/foo.pdf [R=301,L,NC]
如何编写同时考虑波浪号和查询参数的 301 重定向?
在此先感谢您的帮助!
你需要使用RewriteCond
检查 url 查询字符串的指令。你不能在 RewriteRule
中这样做。 url 中的查询字符串是 la
.
RewriteEngine on
RewriteCond ℅{QUERY_STRING} ^la$ [NC]
RewriteRule ^.*bar\.pdf$ /foo.pdf? [L,R=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]
但是查询字符串可能附加到新目标,以防止在目标末尾添加 ?
this :
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/ [R=301,L,NC]
所以,%1
指的是这个条件RewriteCond %{QUERY_STRING} ^(.*)$
,</code>指的是这个条件<code>RewriteRule ^(.*)$
等等。