На веб‑сайтах иногда после удаления всех GET‑параметров в URL остаётся лишний знак вопроса (?). Это может выглядеть некрасиво и мешать SEO. На уровне Apache это можно исправить с помощью правил мод_rewrite в файле .htaccess.
Проблема
Пример URL с пустыми параметрами:
https://example.com/page?
После удаления всех GET‑параметров остаётся ?. Браузер воспринимает это как часть URL, хотя фактически параметров нет. Чтобы автоматически убирать знак вопроса без изменения остальной части URL, можно использовать правила RewriteEngine.
Решение через .htaccess
Для всех версий Apache
Добавьте следующие строки в ваш .htaccess в корне сайта:
RewriteEngine On# Проверяем, что запрос содержит знак вопроса
RewriteCond %{THE_REQUEST} ^[^\s]+\s+[^?]*?\?# Проверяем, что строка запроса пустая
RewriteCond %{QUERY_STRING} =""# Перенаправляем на URL без '?'
RewriteRule .? %{REQUEST_URI}? [R=301,L]
Объяснение:
RewriteEngine On— включает модуль переписывания URL.RewriteCond %{THE_REQUEST} ^[^\s]+\s+[^?]*?\?— проверяет, что исходный запрос содержит?.RewriteCond %{QUERY_STRING} =""— проверяет, что параметров нет (строка запроса пуста).RewriteRule .? %{REQUEST_URI}? [R=301,L]— делает редирект на тот же URL без GET‑параметров,[R=301,L]означает редирект 301 (постоянный) и прекращение обработки остальных правил.
Для Apache 2.4+
В Apache 2.4+ появился флаг QSD (Query String Discard), который упрощает задачу:
RewriteEngine OnRewriteCond %{THE_REQUEST} ^[^\s]+\s+[^?]*?\?
RewriteCond %{QUERY_STRING} =""RewriteRule .? %{REQUEST_URI} [R=301,L,QSD]
- Флаг
QSDавтоматически удаляет пустую строку запроса (?) при редиректе, без необходимости добавлять её вручную.
Это более современный и надёжный способ для новых версий Apache.
Как это работает
- Запрос приходит на сервер с URL вроде
/page?. RewriteCondпроверяет, есть ли знак?и что параметров нет.RewriteRuleделает редирект на URL без?.- Браузер получает «чистый» URL, а поисковые системы видят корректный адрес.
Примечания
- Всегда используйте 301 редирект, чтобы поисковые системы обновили индекс и не считали пустой
?отдельной страницей. - Перед внесением изменений сделайте резервную копию
.htaccess— ошибка может привести к недоступности сайта. - Проверяйте работу правил на тестовом сервере или через инструменты типа
curlили консоль браузера.
Итог
Удаление лишнего знака вопроса в URL через .htaccess — это простое и эффективное решение для SEO и аккуратного отображения адресов.
- Для старых версий Apache используется стандартное правило с
RewriteRule .? %{REQUEST_URI}?. - Для Apache 2.4+ удобно использовать флаг
QSD.
Оба способа позволяют автоматически очищать URL без GET‑параметров и поддерживать чистую структуру ссылок.