简单的重写不起作用

时间:2014-10-23 22:18:39

标签: apache mod-rewrite

我想访问以下网址:

http://example.com/test/?key=123

并获取http://example.com/index.php?q=123的内容

我试过这个规则:

RewriteCond %{QUERY_STRING} key=(.*)
RewriteRule /test/.* /index.php?q=%1 [L]

但它不起作用。有没有办法使这项工作?

1 个答案:

答案 0 :(得分:0)

尝试删除/test/.*上的前导斜杠或将其替换为^,即test/.*^test/.*。问题是,使用.htaccess重写规则时,前导斜杠不是请求的一部分。

请参阅每个目录重写

下的注释here
  

删除的前缀始终以斜杠结尾,这意味着匹配对于从不具有前导斜杠的字符串。因此,带有^ /的模式在每个目录上下文中永远不会匹配。

我还要清理查询字符串匹配以使用

RewriteCond %{QUERY_STRING} key=([^&]+)
RewriteRule ^test/.* /index.php?q=%1 [L]