htaccess中的RewriteRule没有任何影响

时间:2015-07-20 18:11:21

标签: regex apache .htaccess

抱歉,这可能是一个简单的问题,但我已经阅读了大量的教程,无法解决问题。这是URL示例:

http://localhost:8106/privacy-policy/?lang=fr&dest=app

.htaccess内容:

RewriteEngine on
RewriteRule ^privacy-policy/?lang=([a-z][a-z])&dest=app$    privacy-policy/$1   [NC,L] 

当我访问该网址时,我没有被重定向。有什么想法吗?

由于

2 个答案:

答案 0 :(得分:1)

您无法与规则中的查询字符串匹配,您需要使用%{QUERY_STRING}变量:

RewriteEngine on
RewriteCond %{QUERY_STRING} ^lang=([a-z][a-z])&dest=app$
RewriteRule ^privacy-policy/$    privacy-policy/%1   [NC,L] 

请注意,反向引用必须为%1。如果您需要它来重定向浏览器,您还需要在方括号中添加R标记。

答案 1 :(得分:0)

感谢Jon Lin在query_string和%1编辑上的线索。它最终没有使用该代码的复制/粘贴,但这最终是我最终得到的并且它正在工作:

  RewriteCond %{REQUEST_URI} privacy-policy 
  RewriteCond %{QUERY_STRING} lang=(\w+)&dest=app 
  RewriteRule ^privacy-policy/$ /privacy-policy/%1? [R=301,L]

再次感谢您对此的帮助。