我有一个 drupal 自带的默认 .htaccess 文件。为了将外部链接的页面从旧网站重定向到新网站,我通常使用如下语句
Redirect /foo http://www.example.com/bar
一切按预期进行。
但当看起来像
Redirect /index.php?x=y http://www.example.com
并且请求在 .htaccess 文件末尾通过 Drupal 的 mod_rewrite 规则运行。
你知道问题是什么吗?
答案1
问题
Redirect
不匹配 URL 参数,则仅匹配小路的 URL。
解决方案
你能QueryString
将变量与RewriteCond
和匹配RewriteRule
。以下是可以运行(但未经测试)的代码片段,您可以尝试一下:
RewriteCond %{QUERY_STRING} x=y
RewriteRule ^index.php http://www.example.com [R=301]
您应该注意以下几点:
- 这
RewriteCond
条线实际上是regex(正则表达式),因此您必须转义添加到其中的任何特殊字符(例如标点符号),并且?
省略第一个,但任何其他 URL 参数都必须包含 (&
)RewriteCond %{QUERY_STRING} x=y&a=b
。 - 此方法相当于
Redirect
,因为我指定了 HTTP 状态代码(HTTP 301 重定向,是永久性的)。