RewriteRule表达式不起作用

时间:2017-07-28 17:52:57

标签: apache .htaccess mod-rewrite

我想将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

我在正则表达式中缺少什么?

1 个答案:

答案 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或某些相关错误。