这个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的一部分。不知道为什么这不起作用......
我试过逃跑?
\\? \? [?]
我试图逃避/
\\/ \/ [/]
这些似乎都不起作用......
帮助!
答案 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/?)末尾的空问号非常重要,因为它会丢弃目标路径/网址中的旧查询字符串。