x__miller_x
@x__miller_x

Как влияет количество редиректов в htaccess?

Доброго дня!

Собственно, сайт меняет структуру и адреса страниц (порядка 2500).
Урлы я склеил в эксельке, но есть 1 проблема:
адреса со слэшем и без него обрабатываются отдельно, поэтому вместо 2500 редиректов получается 5000 (для адресов с / и без /).

Для редиректа использую конструкцию, чтобы не было пересечений с похожими урлами и редиректами нетуда:
RewriteCond %{QUERY_STRING} ^(.*)oldpage$
RewriteRule ^(.*)$ level1/level2/newpage/? [R=301,L]

RewriteCond %{QUERY_STRING} ^(.*)oldpage/$
RewriteRule ^(.*)$ level1/level2/newpage/? [R=301,L]


Отсюда 2 вопроса:
1) 5000 редиректов как-то повлияет на скорость работы сайта и обхода его роботом?
2) есть ли способ решить проблему для адресов со слэшем и без него, чтобы не делать 2 редиректа для одного и того же адреса?

Сам htaccess
AddDefaultCharset utf-8

RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_USER_AGENT} ^.*internal\ dummy\ connection.*$ [NC]
RewriteRule .* - [F,L]


RewriteRule ^(manager|assets)/.*$ - [L]
RewriteRule \.(jpg|jpeg|png|gif|ico)$ - [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]

RewriteCond %{REQUEST_URI} !-f
RewriteCond %{REQUEST_URI} !/$
RewriteCond %{REQUEST_URI} !.html$
RewriteRule (.+) $1/ [R=301,L]


RewriteCond %{QUERY_STRING} ^(.*)page1/$
RewriteRule ^(.*)$ level1/leve2/page2/? [R=301,L]
  • Вопрос задан
  • 1687 просмотров
Пригласить эксперта
Ответы на вопрос 3
ewal
@ewal
дизайнер-верстальщик
роботу все равно, время редиректа напрямую зависит от мощи серва, если серв мощный, то не парься, ПС обойдут ваш сайт по всем редиректам пропорционально тому, как хостинг сервер будет отдавать контент с перенаправлениями и без. Из сего следует, что тысячные и даже десятые секунды задержки входят в порог валидности по скоростным проходам для ПС
Ответ написан
Комментировать
@purplesky
Вот это вы извращенный способ придумали борьбы со слэшами))
Проблема решается в три строчки кода и не обязательно для каждой страницы прописывать отдельно. CMS юзаете или самописку?
Ответ написан
shambler81
@shambler81 Куратор тега htaccess
первая рекомендация, запиши правельней гет.
RewriteCond %{QUERY_STRING} (^|&)первый_гет($|&)
RewriteCond %{QUERY_STRING} (^|&)еще_гет($|&)
RewriteCond %{QUERY_STRING} (^|&)и так_далее($|&)

Если урлов много то тут
https://donatstudios.com/RewriteRule_Generator
Вторая слеш и без слеша это не проблемма не редиректа, а любого сайта впринципе. Так чтоэто отдельне правило на весь сайт.

############################################################################
#### Cтандартный .htaccess для проектов студии Клондайк, версия 2.3     ####
############################################################################
RewriteEngine On
   #  Директива включает редиректы.
RewriteBase /
   # Без директивы (.*) = /$1 будет /var/wwww/site/web/$1  с директивой  = /$1
Options +FollowSymLinks
   # Разрешает переход по символическим ссылкам.

############################################################################
#### Перенаправляем протокол https на http                              ####
############################################################################
#RewriteCond %{HTTPS} On
   # Проверяем наличие https в URL.
#RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
   # Перенаправляем протокол на https.
############################################################################
#### Выбор основного зеркала (или с www или без www)                    ####
############################################################################
   # 1. Редирект с www на без www. (раскоментировать директивы пункта 1)
RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
   # Проверяем, содержит ли домен www (в начале URL).
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
   # Перенаправляем URL на домен без www.
####
   # 2. Редирект без www на www. (раскоментировать директивы пункта 2)
#RewriteCond %{HTTP_HOST} !^www\.(.*) [NC]
   # Проверяем, не содержит ли домен www (в начале URL).
#RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
   # Перенаправляем URL на домен c www.

############################################################################
#### Убираем повторяющиеся слеши (/) в URL                              ####
############################################################################
RewriteCond %{THE_REQUEST} //
RewriteRule .* /$0 [R=301,L]
############################################################################
#### Убираем слеши в конце URL для статических файлов (содержит точку)  ####
############################################################################
RewriteCond %{REQUEST_URI} !(.*)/$
   # Если слеша в конце нет.
RewriteCond %{REQUEST_FILENAME} !-f
   # Не является файлом.
RewriteCond %{REQUEST_URI} !\..+$
   # В URL нет точки (файл).
RewriteRule ^(.*)$ $1/ [L,R=301]
   # Добавляем слеш в конце.
############################################################################
#### Добавляем слеш(/), если его нет, и это не файл.                    ####
############################################################################
RewriteCond %{REQUEST_URI} !(.*)/$
   # Если слеша в конце нет.
RewriteCond %{REQUEST_FILENAME} !-f
   # Не является файлом.
RewriteCond %{REQUEST_URI} !\..+$
   # В URL нет точки (файл).
RewriteRule ^(.*)$ $1/ [L,R=301]
   # Добавляем слеш в конце.

############################################################################
#### Убираем index.php, если он есть в конце URL                        ####
############################################################################
RewriteCond %{REQUEST_METHOD} =GET
   # Выявляем GET запрос в URL (не POST).
RewriteCond %{REQUEST_URI} ^(.*)/index\.php$
   # URL cодержит index.php в конце.
RewriteRule ^(.*)$ %1/ [R=301,L]
   # Удалить index.php из URL.

############################################################################
#### Компрессия статического контента для гугл  спид тест               ####
############################################################################

Нужное подчеркнуть, ненужное удалить.
Ставить ДО ЧПУ.

Теперь вопрос третий, сильно ли влияет.
я пытался в свое время замерить падение производительности но до 6к редиректов притом с2-6 квери ( отдельные конды на каждого) нифига не заметил. ТАк что да оно есть. Но выявить реальное падение не удалось.
Ответ написан
Ваш ответ на вопрос

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

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