Избавиться от редиректа

Сестры Бабурины
На сайте с 29.12.2011
Offline
45
1736

Друзья,

попался сайт, в котором страницы сайта редиректятся по 301 "сами на себя".

с site.com/nazvanie-tovara

на site.com/nazvanie-tovara/ (со слэшем в конце)

причем это не директория, а статичная страница.

в итоге Вебместер.Яндекс и Гурл ругаются на него, карта сайта получается кривой и много других неприятных моментов.

Сайт "самописный" и древний, поэтому разработчика найти не удалось. Можно ли "по фотографии" определить, где искать причину?

VHS
На сайте с 28.09.2007
Offline
142
VHS
#1

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

что то в этом духе в .htaccess

Правда у меня сделано так и никто не ругается

M
На сайте с 04.12.2013
Offline
223
#2

Со слешем и без – это две разные ссылки, поэтому редирект вполне уместен, если контент под ними одинаковый. Другое дело, правильно ли это реализовано.

Домены и скрипт для коротких ссылок: https://u75.ru/domains-for-shortcuts
Сестры Бабурины
На сайте с 29.12.2011
Offline
45
#3
miketomlin:
Со слешем и без – это две разные ссылки, поэтому редирект вполне уместен, если контент под ними одинаковый. Другое дело, правильно ли это реализовано.

контент одинаковый. Хочу избавиться от редиректа на страницу со слешем и от самих страниц со слешем соответственно.

M
На сайте с 04.12.2013
Offline
223
#4

Зачем? Рядовые пользователи часто путаются при публикации таких ссылок. Вы рискуете тем, что неправильно опубликованная ссылка будет приводить к выводу Not Found на вашем сайте и соответственно к потери части аудитории. Если уж так хотите избавиться от подобного редиректа, лепите ".html" или что-то подобное в конце ссылок.

Сестры Бабурины
На сайте с 29.12.2011
Offline
45
#5
miketomlin:
Вы рискуете тем, что неправильно опубликованная ссылка будет приводить к выводу Not Found на вашем сайте и соответственно к потери части аудитории

Все верно, но одно дело когда редирект от "неправильно опубликованой" ссылки со слешем ведет на ссылку БЕЗ слеша, а другое когда наоборот (как сейчас).

В итоге карту сайта выглядит как:

главная -> страница без слеша -> редирект на страницу со слешем

в итоге все криво и косо + негодование всех сервисов вебмастера яндекс и валидаторов.

в данный момент htaccess выглядит так

 

RewriteEngine On
rewritecond %{http_host} ^SITE.com [nc]
rewriterule ^(.*)$ http://www.SITE.com/$1 [r=301,nc]
M
На сайте с 04.12.2013
Offline
223
#6

Редирект на страницу со слешем вполне имеет право на существование.

Сестры Бабурины:
в данный момент htaccess выглядит так...

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

Сестры Бабурины
На сайте с 29.12.2011
Offline
45
#7

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

Options -MultiViews

ErrorDocument 404 /index.php?lang=ru

RewriteEngine On
rewritecond %{http_host} ^site.com [nc]
rewriterule ^(.*)$ http://www.site.com/$1 [r=301,nc]

# Для кабинета index.php?func=$1
RewriteRule ^cabinet/([^/.]*)[\/]$ tms/cabredirect.php [L,QSA]
RewriteRule ^cabinet/$ tms/cabredirect.php [L,QSA]
RewriteRule ^cabinet/index.php$ tms/cabredirect.php [L,QSA]

# Для менеджера
RewriteRule ^boss/([^/.]*)[\/]$ boss/index.php?func=$1 [L,QSA]
RewriteRule ^boss/$ boss/index.php?func=home [L,QSA]

#Mailer
RewriteRule ^revmailer/$ revmailer/index.php [L,QSA]

# Здесь нужно проставить дефолт язык
RewriteRule ^$ index.php?lang=ru [L,QSA]

RewriteRule ^/sendquestion/$ index.php?lang=en&show=sendquestion [L,QSA]


#Остальные языки, условие - языки должны быть длинной в три символа

RewriteRule ^ru$ / [r=301,nc]
RewriteRule ^ru/$ / [r=301,nc]

RewriteRule ^ru/([^/.]*)/$ /$1 [r=301,nc]

RewriteRule ^ru/([^/.]*)/([^/.]*)/$ /$1/$2 [r=301,nc]

#Остальные языки, условие - языки должны быть длинной в два символа
RewriteRule ^(..)$ / [r=301]
# RewriteRule ^(..)/$ index.php?lang=$1 [L,QSA]

RewriteRule ^(..)/([^/.]*)$ /$2 [r=301,nc]
# RewriteRule ^(..)/([^/.]*)[\/]$ index.php?show=$2&lang=$1 [L,QSA]

RewriteRule ^(..)/([^/.]*)/([^/.]*)$ /$2/$3 [r=301,nc]
# RewriteRule ^(..)/([^/.]*)/([^/.]*)[\/]$ index.php?show=$3&parent=$2&lang=$1 [L,QSA]

RewriteRule ^yan$ index.php?lang=ru [L,QSA]
RewriteRule ^yan/([^/.]*)$ index.php?lang=ru&$1 [L,QSA]
RewriteRule ^aff/([^/.]*)$ index.php?lang=ru&$1 [L,QSA]

#Остальные языки, условие - языки должны быть длинной в три символа
RewriteRule ^(...)$ /$1/ [r=301]
RewriteRule ^(...)/$ index.php?lang=$1 [L,QSA]

RewriteRule ^(...)/([^/.]*)$ /$1/$2/ [r=301,nc]
RewriteRule ^(...)/([^/.]*)[\/]$ index.php?show=$2&lang=$1 [L,QSA]

RewriteRule ^(...)/([^/.]*)/([^/.]*)$ /$1/$2/$3/ [r=301,nc]
RewriteRule ^(...)/([^/.]*)/([^/.]*)[\/]$ index.php?show=$3&parent=$2&lang=$1 [L,QSA]

RewriteRule ^agm/(...)/([^/.]*)/([^/.]*)$ index.php?show=$1&id=$2&refId=$3 [L,QSA]


#Здесь проставить также дефолтный язык
RewriteRule ^([^/.]*)$ /$1/ [r=301,nc]
RewriteRule ^([^/.]*)[\/]$ index.php?show=$1&lang=ru [L,QSA]

RewriteRule ^([^/.]*)/([^/.]*)$ /$1/$2/ [r=301,nc]
RewriteRule ^([^/.]*)/([^/.]*)[\/]$ index.php?show=$2&parent=$1&lang=ru [L,QSA]
siv1987
На сайте с 02.04.2009
Offline
427
#8

раз

Сестры Бабурины:
RewriteRule ^([^/.]*)$ /$1/ [r=301,nc]

два

Сестры Бабурины:
RewriteRule ^([^/.]*)/([^/.]*)$ /$1/$2/ [r=301,nc]

И реврайты скорее всего тоже придется переделать


RewriteRule ^([^/.]*)[\/]$ index.php?show=$1&lang=ru [L,QSA]
RewriteRule ^([^/.]*)/([^/.]*)[\/]$ index.php?show=$2&parent=$1&lang=ru [L,QSA]

убрать закрывающие слеши.

Сестры Бабурины
На сайте с 29.12.2011
Offline
45
#9
siv1987:
убрать закрывающие слеши.

убрал. Но теперь теперь по ссылкам вот такое сообщение:

Неверное перенаправление на странице

Это может происходить в случаях, когда переадресация страниц зациклена

может не правильно удалил слеши?

как должны выглядеть обновленные коды:

 RewriteRule ^([^/.]*)$ /$1/ [r=301,nc]

RewriteRule ^([^/.]*)/([^/.]*)$ /$1/$2/ [r=301,nc]
siv1987
На сайте с 02.04.2009
Offline
427
#10
Сестры Бабурины:
как должны выглядеть обновленные коды:

Никак, они должны быть удалены если вам не нужен редирект. Либо же сделать редирект наоборот "с слеша на без" (одним правилом):

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^([^.]+)/$ /$1 [R=301,L]

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