Как создать RewriteRule, где в URL запроса есть строка запроса - PullRequest
0 голосов
/ 31 августа 2011

Я чувствую, что я действительно близко, но я не могу заставить этот Apache RewriteRule работать правильно.

У меня есть URL-адрес типа http://mysite.com/product.php?view=true&ID=123, и я хотел бы перенаправить на http://mysite.com/some-page. Но если идентификатор продукта = 456, то я бы хотел перенаправить его на http://mysite.com/some-other-page.

Таким образом, мне не нужно сохранять строку запроса для моих целевых URL, но мне все равно, каково это в запросе, потому что это определит, куда я перенаправлю пользователя. Я пытался понять, как использовать параметр mod_rewrite %{QUERY_STRING}, но просто не могу заставить его работать.

Заранее спасибо за помощь!

Ответы [ 2 ]

1 голос
/ 31 августа 2011

Это должно немного помочь.

RewriteCond %{QUERY_STIRNG} id=456
RewriteRule .* /some-other-page? [R,L]

Подробнее о Управление строкой запроса .

0 голосов
/ 31 августа 2011

Как это:

RewriteEngine On

RewriteCond %{QUERY_STRING} =view=true&ID=123
RewriteRule ^product\.php$ /some-page? [R=301,L]

RewriteCond %{QUERY_STRING} =view=true&ID=456
RewriteRule ^product\.php$ /some-other-page? [R=301,L]
  1. Вам необходимо указать ^product.php, а также строку запроса. Я совпадал со строкой запроса FULL EXACT (и view=true, и ID=123 должны присутствовать в порядке EXACT). Если вам нужно только частичное совпадение (например, только ID=123), замените =view=true&ID=123 на ID=123.

  2. Обратите внимание ? в конце нового URL - это избавление от существующей строки запроса. Без этого /product.php?view=true&ID=123 будет перенаправлен как /some-page?view=true&ID=123.

  3. Я использовал 301 постоянный редирект. Вы можете изменить его на 302 или любой другой код перенаправления, который, по вашему мнению, вам больше подходит.

  4. Это должно быть помещено в .htaccess в корневой папке сайта. При размещении в другом месте может потребоваться небольшая настройка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...