我想将URl重写为另一个,但Rewrite表达式无效。
实施例。 URL1:" http://www.demo.com/de-ch/case1/?id=23
"
和
实施例。网址2:' http://www.demo.com/de-ch?id=23
'
RULE:RewriteRule ^(.....)([\?]|(.*))$ http://www.result.com/$1
此规则给出了以下结果:
http://www.result.com/de-ch?id=23
但我只需要iso代码http://www.result.com/de-ch
我在正则表达式中缺少什么?
答案 0 :(得分:0)
您无法与规则模式中的查询字符串进行匹配。查询字符串在技术上不是路径的一部分。您需要使用RewriteCond
和%{QUERY_STRING}
变量:
RewriteCond %{QUERY_STRING} ^id=23
RewriteRule ^(.....) http://www.result.com/$1?
注意“?”在规则结束时。这将删除查询字符串。
但是,由于您没有对查询字符串执行任何操作,因此您可以将其完全删除,并且只有:
RewriteRule ^(.....) http://www.result.com/$1?
请注意,此规则会导致浏览器重定向到http://www.result.com/de-ch
,如果您没有在该网址解析的资源,那么您只会收到404或某些相关错误。