Как убрать параметры из адресной строки?

Автор PHP_USER, 29-12-2017, 07:35:05

« назад - далее »

PHP_USERTopic starter

Не получается в htaccess настроить редирект со страницы с параметрами вида site.com/article.html?sa=X&ved=0ahUKEwi50Q9QEIDjAA
на страницы без параметров вида
site.com/article.html

Добавил вот такой код, но он почему-то не срабатывает:
RewriteCond %{QUERY_STRING} ^sa= [NC]
RewriteRule (.*) $1? [R=301,L]

Естественно, это нужно, чтобы не плодились дубли страниц.


Coder

301 редирект для страницы с GET параметрами _http://coderhs.com/archive/redirect_301#get

301 редирект со страницы со знаком вопроса в URL _http://coderhs.com/snippets/301-question-url


PHP_USERTopic starter

Coder, спасибо, но там немного другие примеры.

Думаю, у меня первая строка верно написана, а вот вторая, с правилом не работает:
RewriteRule (.*) $1? [R=301,L]

Coder

PHP_USER, примеры одни - все, что с вопросом - нужно адаптировать, конечно.
Кроме того, по дублям можно закрыть в роботс, использовать каноникал.

И 301 можно через PHP, что часто оптимальнее, чем через htaccess

)Пожалуйста

alexakap

Попробуйте слеш перед $ добавить. У меня такой редирект срабатывал, правда еще без [NC]
  •  


PHP_USERTopic starter

alexakap, вот в таком виде код заработал:
RewriteCond %{QUERY_STRING} ^sa=
RewriteRule (.*) /$1? [R=301,L]

Одна проблемка - перебрасывает на страницу с обычным протоколом http://site.ru/article.html,
а сайт на https
Сайт сделан на вордпрессе.

alexakap

Цитата: PHP_USER от 29-12-2017, 11:05:13
alexakap, вот в таком виде код заработал:
RewriteCond %{QUERY_STRING} ^sa=
RewriteRule (.*) /$1? [R=301,L]

Одна проблемка - перебрасывает на страницу с обычным протоколом http://site.ru/article.html,
а сайт на https
Сайт сделан на вордпрессе.

А редирект на https есть? Если нет, то его рано или поздно придется настраивать. Можно попробовать заменить вторую строку на
RewriteRule (.*) https://site.ru/$1? [R=301,L]
Но что-то мне подсказывает, что это бред

  •  

PHP_USERTopic starter

В общем, проблема решена, заработала вот такая конструкция:

- сначала редирект всего на https
ЦитироватьRewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
- а потом собственно убираем хвост у адреса страницы
Цитировать
RewriteCond %{QUERY_STRING} ^sa= [NC]
RewriteRule (.*) $1? [R=301,L,QSD]