Как сделать htaccess переписать с вопросительным знаком? в оригинальном URL - PullRequest
1 голос
/ 28 мая 2010

Мне нужно перенаправить URL-адрес, на котором есть вопросительный знак, и я просто не могу найти правильный код .htaccess, чтобы это произошло.

Пример: редирект 301 /home.php?cat=16 http://www.example.com/furniture.html

Я считаю, что мне нужно выполнить условие перезаписи, но я не эксперт по htaccess.

Ответы [ 3 ]

3 голосов
/ 28 мая 2010

С директивой Redirect из mod_alias вы можете исследовать только путь URI , но не запрос (применяется ко всем директивам mod_alias ). Если вы хотите проверить URI-запрос, вам нужно использовать mod_rewrite :

RewriteEngine on
RewriteCond %{QUERY_STRING} ^cat=16$
RewriteRule ^home\.php$ http://www.example.com/furniture.html? [L,R=301]

Пустой запрос в замене предотвратит добавление исходного запроса к новому URI.

1 голос
/ 28 мая 2010

Из apache2 mod_rewrite документов :

Что соответствует?

Шаблон будет изначально сопоставлен против части URL после имя хоста и порт, а также перед Строка запроса. Если вы хотите соответствовать против имени хоста, порта или запроса используйте строку RewriteCond с %{HTTP_HOST}, %{SERVER_PORT} или %{QUERY_STRING} переменные соответственно.

0 голосов
/ 13 сентября 2013

для более сложных параметров (например, site.com / index.php? Blaa = 1 & id = 33 )

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{QUERY_STRING} blaa=1&id=33
RewriteRule ^(.*)$ http://www.site.com/yourpage.html? [R=301,L]
</IfModule>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...