@Ysery

Htaccess, чтобы отсекал в том числе и только символ «?», как?

Доброго времени суток, уважаемые специалисты.

Использую вот такой код:

<IfModule mod_rewrite.c>
RewriteCond %{QUERY_STRING} !^$
RewriteCond %{QUERY_STRING} !(^|&)srp=
RewriteCond %{QUERY_STRING} !(^|&)q=
RewriteRule ^(.+?)\.html$ https://%{HTTP_HOST}/$1.html? [L,R=301]
</IfModule>

<IfModule mod_rewrite.c>
RewriteRule ^(.+?)\.html(?!/amp/).+$ https://%{HTTP_HOST}/$1.html? [L,R=301]
</IfModule>


Он отсекает всё после ...some-link.html , за следующими исключениями
если в ссылке присутствует ...some-link.html?srp=123 или ...some-link.html?q=123 или ...some-link.html/amp/

Однако если ссылка будет такая ...some-link.html? (вопросительный знак на конце и больше ничего), то этот символ не будет отсечён.

Что надо поправить в коде, чтобы ещё захватывалось отсечение этого самого вопросительного знака?
  • Вопрос задан
  • 36 просмотров
Пригласить эксперта
Ответы на вопрос 1
@dodo512
Достаточно поменять условие RewriteCond %{QUERY_STRING} !^$ на RewriteCond %{THE_REQUEST} \?

<IfModule mod_rewrite.c>
RewriteCond %{THE_REQUEST}  \?
RewriteCond %{QUERY_STRING} !(^|&)srp=
RewriteCond %{QUERY_STRING} !(^|&)q=
RewriteRule ^(.+?)\.html$ https://%{HTTP_HOST}/$1.html? [L,R=301]
</IfModule>

<IfModule mod_rewrite.c>
RewriteRule ^(.+?)\.html(?!/amp/).+$ https://%{HTTP_HOST}/$1.html? [L,R=301]
</IfModule>
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы