问题

问题

我有一个 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]

您应该注意以下几点:

  1. RewriteCond条线实际上是regex(正则表达式),因此您必须转义添加到其中的任何特殊字符(例如标点符号),并且?省略第一个,但任何其他 URL 参数都必须包含 ( &) RewriteCond %{QUERY_STRING} x=y&a=b
  2. 此方法相当于Redirect,因为我指定了 HTTP 状态代码(HTTP 301 重定向,是永久性的)。

致谢

相关内容