Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Html. Как убрать знак "?" вконце URL? через .htaccess

артём чернядьев Ученик (207), на голосовании 3 года назад
Есть решение только для страниц оканчивающихся именно на знак вопроса.
Но остаются такие страницы как? 164ввфы4 , ?=id448943 и т. д.
Как настроить редирект так, чтобы все что после знака вопроса перенаправляло на такой же URL-адрес без.
Есть знатаки?

# Убираем? на конце URL
RewriteCond %{THE_REQUEST} ^[^\s]+\s+[^?]*?\?
RewriteCond %{QUERY_STRING} =""
# Для любых версий Apache:
RewriteRule .? %{REQUEST_URI}? [R=301,L]
# Для Apache 2.4+:
# RewriteRule .? %{REQUEST_URI} [R=301,L,QSD]
Голосование за лучший ответ
Сергей Стодольский Мастер (1212) 3 года назад
обычно для этих целей используют "единую точку входа в приложение", т. е. если путь на сервере физически не существует (или же вообще всегда), то перенаправляется на (допустим) index.php, который в свою очередь обрабатывает запрашиваемый урл, и решает что делать дальше...
артём чернядьевУченик (207) 3 года назад
немного не то
Сергей СтодольскийМастер (1212) 3 года назад
немного непонятен твой вопрос. какой в итоге урл ты хочешь получить, куда тебя должны перенаправить?
ты хочешь из site.ru/?164ввфы4 получить site.ru/164ввфы4 и потом на него перенаправлять?
артём чернядьевУченик (207) 3 года назад
Ну что тут непонятного может быть? Пишите для рейтинга? Конечно перенаправление на морду сайта. Куда же еще перенаправлять))

Тут только один человек реально попытался ответить, но я на тот момент все уже сделал. Правильно решение отправил в комментарии. Ищите ниже если вам нужно.
Сосиска в тесте Мыслитель (5514) 3 года назад
Можно поступить так: определить есть ли знак вопроса в конце или нет \??$ или есть или нет. Ошибки не будет
артём чернядьевУченик (207) 3 года назад
немного не то
Андрей Артамонов Просветленный (20353) 3 года назад
?name=value обозначает GET запросы со значениями запроса, убрать конечно можно, но это жуткий костыль.

Что ты будешь делать с таким значением? name=value&name=value&name=value&name=value
артём чернядьевУченик (207) 3 года назад
для таких страниц 404 ошибка
Саня Семенов Оракул (60497) 3 года назад
RewriteRule (.+)\?(.*) index.php?request =$2 [R=301,L]
артём чернядьевУченик (207) 3 года назад
Неправильно.
Вот, может пригодится вам.
RewriteRule ^(.*)$ https://sitename.ru/$1? [L,R=301
Похожие вопросы