@Prow1er

Как избавиться от знаков? в url?

Доброго времени суток!
Подскажите, пожалуйста, в такой ситуации:
если в url ввести например
mysite.ru/catalog?/something
то отрабатывает маршрут catalog - страница выводится. Дубляж, однако.
Как сделать переброску с catalog?/something в просто catalog/something, т.е. избавиться от знаков вопроса?
пробовал вот так:
RewriteRule ^(.+)\?(.+)$ /$1$2 [R=301,L]
не прокатывает
  • Вопрос задан
  • 325 просмотров
Решения вопроса 1
shambler81
@shambler81 Куратор тега htaccess
Все что после ? это GET параметры. В свою очередь Get не является частью урла и не попадает в %{REQUEST_URI}

# 301 --- http://www.test.com/faq.html?faq=13&layout=bob => http://www.test2.com/faqs.html
RewriteCond %{HTTP_HOST} ^www\.test\.com$
RewriteCond %{QUERY_STRING} (^|&)faq\=13($|&)
RewriteCond %{QUERY_STRING} (^|&)layout\=bob($|&)
RewriteRule ^faq\.html$ http://www.test2.com/faqs.html? [L,R=301]

# 301 --- http://www.test3.com/faq.html?faq=13&layout=bob => bbq.html
RewriteCond %{QUERY_STRING} (^|&)faq\=13($|&)
RewriteCond %{QUERY_STRING} (^|&)layout\=bob($|&)
RewriteRule ^faq\.html$ /bbq.html? [L,R=301]

Обратите внимание что как выделить так и удалить гет параметр просто не получится
для его удаления просто укажите нулевой гет парметр поставив в конце урла знак вопроса ;)

НУ и да предупреждая ваш вопрос как же передать скобку из RewriteCond
Тут все еще проще она передается не $1 а %1

(^|&)layout\=bob($|&) - можно упростить до layout\=bob в омем примере не играет значение последовательность этих параметров
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы