Редирект с "site.loc/?" на "site.loc/"
Нужно сделать редирект с страницы "site.loc/?" на "site.loc", будет огромным плюсов если это будет работать на всех страницах, то есть "site.loc/page/?". Подойдет решение и на PHP. Все работает под управлением CMS WordPress.
Пробовал сделать с помощью
RedirectMatch 301 ^/?$ /
Проверял отдельно на htaccess.madewithlove.be и работает для главной страницы. Но как только добавляю уже до рабочего файла, который выглядит вот так:
# BEGIN WordPress
# Директивы (строки) между `BEGIN WordPress` и `END WordPress`
# созданы автоматически и подлежат изменению только через фильтры WordPress.
# Сделанные вручную изменения между этими маркерами будут перезаписаны.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
То перестает работать, если в конец файла разместить. Если разместить в начале файла, начинается циклический редирект.
Заранее спасибо.
Ответы (1 шт):
Автор решения: tutankhamun
→ Ссылка
Если нужно убрать пустой вопрос то решение вот:
RewriteBase /
RewriteCond %{THE_REQUEST} "^.+ .+\? "
RewriteRule (.*) $1? [R=301,L]
Тут приходится делать две странные вещи:
- Искать вопрос в конце URI в переменной
THE_REQUEST. Дело в том что эта перемнная разделяется в дальнейшем наREQUEST_METHOD,REQUEST_URI,QUERY_STRINGиSERVER_PROTOCOL. При этом "вопрос" теряется. То есть его нету ни вREQUEST_URIни вQUERY_STRING; - Подставлять вопрос в
RewriteRuleчтобы вопрос убрать (ну вот так это работает)