Назад | Перейти на главную страницу

Директива перенаправления игнорируется в .htaccess при использовании параметров URL

У меня есть файл .htaccess по умолчанию, который поставляется с drupal. Чтобы перенаправить внешние связанные страницы со старого веб-сайта на новый, я обычно использую такие утверждения, как

Redirect /foo http://www.example.com/bar

Это работает, как ожидалось.

Но это утверждение полностью игнорируется, если выглядит как

Redirect /index.php?x=y http://www.example.com

и запрос проходит через правила mod_rewrite из Drupal в конце файла .htaccess.

Вы знаете, в чем проблема?

Проблема

Redirect не соответствует параметрам URL, он будет соответствовать только ДОРОЖКА URL-адреса.

Решение

Вы ЖЕСТЯНАЯ БАНКА соответствовать QueryString переменная с RewriteCond и RewriteRule. Вот рабочий (но непроверенный) фрагмент, который вы можете попробовать:

RewriteCond %{QUERY_STRING} x=y
RewriteRule ^index.php http://www.example.com [R=301]

Вы должны отметить несколько вещей по этому поводу:

  1. В RewriteCond линия действительно регулярное выражение (регулярное выражение), поэтому вам нужно будет экранировать любые добавляемые к нему специальные символы (например, знаки препинания), а первый ? опущен, но любые другие параметры URL-адреса должны включать & (RewriteCond %{QUERY_STRING} x=y&a=b).
  2. Этот метод эквивалентен Redirect, потому что я указал код состояния HTTP (a HTTP 301 перенаправление, который является постоянным).

Кредиты