我有一个drupal附带的默认.htaccess文件。 为了将旧网站的外部链接页面redirect到新网页,我通常使用类似的语句
Redirect /foo http://www.example.com/bar
这按预期工作。
但是看起来这个陈述完全被忽略了
Redirect /index.php?x=y http://www.example.com
并且该请求在.htaccess文件的末尾通过Drupal中的mod_rewrite规则运行。
你知道什么是问题吗?
Redirect不匹配url参数,它只会匹配url的path 。
你可以使用RewriteCond和RewriteRule匹配QueryStringvariables。 这里是一个工作(但未经testing)的片段,你可以尝试:
RewriteCond %{QUERY_STRING} x=y RewriteRule ^index.php http://www.example.com [R=301]
你应该注意一些这方面的事情:
RewriteCond行真的是一个正则expression式(正则expression式) ,所以你将不得不转义任何你添加到它的特殊字符(如标点符号),第一个? 被省略,但是任何进一步的URL参数都必须包含& ( RewriteCond %{QUERY_STRING} x=y&a=b )。 Redirect ,因为我指定了HTTP状态码( HTTP 301redirect ,它是永久性的)。