S
S
Sergey2017-03-29 11:13:27
Apache HTTP Server
Sergey, 2017-03-29 11:13:27

How does the number of redirects in htaccess affect?

Good day!
Actually, the site changes the structure and page addresses (about 2500).
I glued the URLs in Excel, but there is one problem:
addresses with and without a slash are processed separately, so instead of 2500 redirects, we get 5000 (for addresses with / and without /).
For a redirect, I use a construction so that there are no intersections with similar urls and redirects go nowhere:

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

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

Hence 2 questions:
1) Will 5000 redirects somehow affect the speed of the site and bypass it by the robot?
2) is there a way to solve the problem for addresses with and without a slash, so as not to do 2 redirects for the same address?
htaccess itself
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]

Answer the question

In order to leave comments, you need to log in

3 answer(s)
E
Evgeny Karpov, 2017-03-29
@ewal

the robot doesn’t care, the redirect time directly depends on the power of the server, if the server is powerful, then don’t worry, PS will bypass your site for all redirects in proportion to how the hosting server will serve content with and without redirects. From this it follows that thousandths and even tenths of a second of the delay are included in the threshold of validity for high-speed passes for PS

F
Fedor, 2017-03-29
@purplesky

This is a perverse way you came up with to combat slashes))
The problem is solved in three lines of code and it is not necessary to write it separately for each page. Do you use CMS or self-writing?

V
Viktor Taran, 2017-03-29
@shambler81

the first recommendation, write down more correctly get.

RewriteCond %{QUERY_STRING} (^|&)первый_гет($|&)
RewriteCond %{QUERY_STRING} (^|&)еще_гет($|&)
RewriteCond %{QUERY_STRING} (^|&)и так_далее($|&)

If there are a lot of urls, then here
https://donatstudios.com/RewriteRule_Generator
The second slash and without a slash is not a problem, not a redirect, but any site in principle. So this is a separate rule for the entire site.
############################################################################
#### 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.

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

Underline what is necessary, delete what is not.
Set to CNC.
Now the third question is whether it has a strong effect.
I tried to measure the drop in performance at one time, but up to 6k redirects, moreover, from 2-6 kveri (separate condos for each), I didn’t notice anything. So yes it is. But it was not possible to identify a real drop.

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question