Anet_1986
@Anet_1986

Как правильно прописать 301, чтобы убрать Get-параметры?

Добрый день. Столкнулась с тем, что в индекс стали попадать статьи у которых в конце адреса стоит знак ? и потом набор цифр или букв, иногда UTM-метки. Как правильно прописать редирект, чтобы переход осуществлялся по нормальным адресам страниц.
На данный момент файл .htaccess выглядит так.

# BEGIN WordPress

RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
RewriteCond %{QUERY_STRING} ^(.+) [NC]
RewriteRule ^(.*)$ /$1? [R=301,L]

Но это помогло отредиректить только главную страницу. По остальным все осталось без изменений. Помогите поправить код, пожалуйста.
  • Вопрос задан
  • 111 просмотров
Решения вопроса 1
@dodo512
Редирект нужно поставить повыше.
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]

RewriteCond %{QUERY_STRING} ^(.+) [NC]
RewriteRule ^(.*)$ /$1? [R=301,L]

RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]


Можно объединить пару правил.
RewriteEngine On

RewriteCond %{QUERY_STRING} ^(.+) [OR]
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1? [L,R=301]

RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]


Ещё можно заменить %{QUERY_STRING} ^(.+) на %{THE_REQUEST} \?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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