mod_rewrite | htaccess仅在特定页面上查询字符串

时间:2014-12-10 10:41:57

标签: php apache .htaccess mod-rewrite url-rewriting

基本上我想用查询字符串将一些奇怪的URL重写到指定的url而没有查询字符串(所以给定的查询字符串在重写url中很重要) 那么,当子文件夹为" dir1 / dir2 /?QUERY_STRING"时,如何定义匹配的查询字符串仅匹配?

我试过了:

网址我想重写:http://www.domain.de/dir1/dir2/?id=xyz:test

我的第一次尝试:

RewriteCond %{QUERY_STRING} id=xyz:test    
RewriteRule ^(.*)$ http://www.domain.de/rewrite.php? [R=301,L]

这是有效的,但是选择哪个子文件夹很重要(因此它也适用于dir1/?id=xyz:test并且它只适用于dir1/dir2/?id=xyz:test

我尝试了这条规则:

RewriteRule ^/?dir1\/dir2\$ rewrite.php

但它不起作用。我认为因为我有一个文件夹,没有文件扩展名,如:

RewriteRule ^/?dir1\/dir2\/\.php$ rewrite.php [QSA,L]

我做错了什么?

谢谢你们!

1 个答案:

答案 0 :(得分:1)

您可能想要添加另一个RewriteCond,例如:

RewriteCond %{REQUEST_URI} ^/dir1/dir2$ [NC]
RewriteCond %{QUERY_STRING} id=xyz:test
RewriteRule ^(.*)$ http://www.domain.de/rewrite.php? [R=301,L]

请注意,[NC]表示"无案例"