Как экранировать знак вопроса в htaccess?
Нужно изменить url из вида
http://site.com/?one
В вид
http://site.com/two
Но такого рода не работают:
RewriteRule "^\?one$" "two"
RewriteRule "^\\?one$" "two"
RewriteRule "^[?]one$" "two"
Как правильно?
Ответы (1 шт):
Автор решения: teran
→ Ссылка
?abc это не путь, к которому применяются правила, а %{QUERY_STRING}, или GET-параметры запроса. Они не валидируются основной директивой RewriteRule. Для проверки следует использовать RewriteCond.
В итоге, чтобы преобразовать входяшую ссылку http://example.com?one и сделать редирект, например на http://example.com/two, следует сделать две вещи.
- проверить, что
%{QUERY_STRING}содержит искомый фрагмент - убедиться, что путь - корневой
Итого:
RewriteCond %{QUERY_STRING} =one
RewriteRule ^$ two [R=301,QSD]