У меня есть файл .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]
Вы должны отметить несколько вещей по этому поводу:
RewriteCond
линия действительно регулярное выражение (регулярное выражение), поэтому вам нужно будет экранировать любые добавляемые к нему специальные символы (например, знаки препинания), а первый ?
опущен, но любые другие параметры URL-адреса должны включать &
(RewriteCond %{QUERY_STRING} x=y&a=b
).Redirect
, потому что я указал код состояния HTTP (a HTTP 301 перенаправление, который является постоянным).