如何将带有查询字符串的URL重定向到另一个页面?

时间:2018-05-16 02:43:07

标签: .htaccess redirect query-string url-redirection http-redirect

这个htaccess片段应该重定向

mywebsite.com/product-category/clothing/?orderby=popularity

mywebsite.com

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^mywebsite.com.com$ [NC]
RewriteRule ^/\?p=([0-9]+)&preview=true$ http://alt.myhost.com/?p=$1&preview=true [NC,R=301,L]

但出于某种原因,我无法逃避/和? URL的一部分。不知道为什么这不起作用......

我试过逃跑?

\\? \? [?]

我试图逃避/

\\/ \/ [/]

这些似乎都不起作用......

帮助!

1 个答案:

答案 0 :(得分:1)

url中?之后的任何内容都是URL QueryString的一部分。

您无法在RewriteRule的模式中测试url QueryString。您需要在%{QUERY_STRING}指令中与RewriteCond变量匹配以下内容:

RewriteEngine on

RewriteBase /
RewriteCond %{HTTP_HOST} ^mywebsite.com.com$ [NC]
RewriteCond %{QUERY_STRING} ^orderby=popularty$ [NC]
RewriteRule ^product-category/clothing/?$ http://example.com/?  [NC,R=301,L]

这会将http://mywebsite.com/product-category/clothing/?orderby=popularty重定向到http://example.com/

目标网址(http://example.com/?)末尾的空问号非常重要,因为它会丢弃目标路径/网址中的旧查询字符串。