Смена URL с параметрами на без них

75
На сайте с 29.01.2011
Offline
39
1702

Может кто-то сталкивался со следующим

Есть урл site.ru/page_1.html у него есть дубль site.ru/page_1.html?lang=ru. На дубль идет много внешних. Дубль в выдаче. Я закрыл дубль от индексации через роботс, яндексу дал карту чистых урлов.

Вопрос, перейдет ли ссылочное внешних с дубля на чистый урл само собой без редиректа? (яндекс то их склеил давно, скорее всего, и может зря я редирект пытаюсь сделать).

Если не перейдет, то как правильно сделать 301 редирект через .htaccess?

(Перенес из чужой темы, а то там никто не замечает, наверное)

Делал так:

RewriteCond %{QUERY_STRING} ^\?lang=ru$ [NC]

RewriteRule ^page_1\.html$ http://site.ru/page_1.html [L,R=301]

не выходит

S
На сайте с 28.10.2005
Offline
296
#1

В роботсе не закрывайте дубль коль редирект ставите

Так пробуйте

RewriteCond %{QUERY_STRING} lang=ru$ [NC]

RewriteRule ^page_1.html$ http://site.ru/page_1.html [L,R=301]

Если страница одна такая то:

Redirect 301 /page_1.html?lang=ru http://site.ru/page_1.html

75
На сайте с 29.01.2011
Offline
39
#2

ну да с роботсом понятно, это само собой, если редирект удастся сделать

т.к. вы предложили работать не будет вобще, т.к. первый параметр RewriteRule это регулярка, и там точку экранировать надо. а в условии не суть важного вопрос там есть или нет.

но если точку заэкранировать получается цикличиская конструкция, т.к. урл тот же и параметры те же самые передадутся ему. А вот как избавится от параметров вопрос.

но я чет уже пришел к выводу, что избавится от них нельзя без еще одного файла редиректа, но боюсь, что яндекс не поймет.

S
На сайте с 28.10.2005
Offline
296
#3

А вы попробуйте

Неэкранированная точка = 1 любой символ, т.е. можно забить в принципе

{QUERY_STRING} - наверняка, то что после вопроса, а не вместе с ним

75
На сайте с 29.01.2011
Offline
39
#4

с точкой верно любой символ

QUERY_STRING - точно без вопроса, у меня оказывается так и написано в htaccess:)

собственно у меня это и написано было, что посоветовали, приводит к зацикливанию, 301 туда же получается.

вышел из положения сделал так:

RewriteCond %{QUERY_STRING} ^lang=rus$

RewriteRule ^(.*)$ _redirect.php [L]

а в файле на php 301 редирект на урл без параметра и УРА все заработало!:)

сразу так не стал делать, думал будет два 301 (или там один 302), сначала на файл, потом на урл. сейчас посмотрел через снифер редирект только один

Благодарю за участие!

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий