Объединить два последовательных 301 редиректа

TN
На сайте с 10.02.2008
Offline
131
1202

В данный момент проставлено два редиректа:

# Определяем главное зеркало
RewriteCond %{HTTP_HOST} ^site\.ru$ [NC]
RewriteRule ^(.*)$ http://www.site.ru/$1 [R=301,L]

# Убираем слеш в конце
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^(.+)/$
RewriteRule ^(.+)/$ /$1 [R=301,L]

Нашел вариант в сети: Один (а не два последовательных!) 301 редирект на c www и без слеша на конце адреса страницы

RewriteCond %{REQUEST_URI} ^\/$
RewriteCond %{HTTP_HOST} ^([^www].*)$
RewriteRule ^(.*)$ http://www.%1/$1 [L,R=301]

RewriteCond %{REQUEST_URI} !\?
RewriteCond %{REQUEST_URI} !\&
RewriteCond %{REQUEST_URI} !\=
RewriteCond %{REQUEST_URI} !\.
RewriteCond %{REQUEST_URI} \/$
RewriteCond %{HTTP_HOST} ^www\.(.*)$
RewriteRule ^(.*)\/$ http://www.%1/$1 [L,R=301]

RewriteCond %{REQUEST_URI} !\?
RewriteCond %{REQUEST_URI} !\&
RewriteCond %{REQUEST_URI} !\=
RewriteCond %{REQUEST_URI} !\.
RewriteCond %{REQUEST_URI} !\/$
RewriteCond %{HTTP_HOST} ^([^www].*)$
RewriteRule ^(.*)$ http://www.%1/$1 [L,R=301]

RewriteCond %{REQUEST_URI} !\?
RewriteCond %{REQUEST_URI} !\&
RewriteCond %{REQUEST_URI} !\=
RewriteCond %{REQUEST_URI} !\.
RewriteCond %{REQUEST_URI} \/$
RewriteCond %{HTTP_HOST} ^([^www].*)$
RewriteRule ^(.*)\/$ http://www.%1/$1 [L,R=301]

Но этот вариант не работает на определение главного зеркала.

Подскажите плиз где ошибка.

- Romanus -
На сайте с 20.01.2015
Offline
91
#1

Teh.Nik, лучше такие тонкости спрашивать на форуме программистов все же.

А чем вас не устроило 2 последовательных редиректа? Они функционируют и проще для понимания.

Делаю SEO. Веду блог - Romanus.ru ( https://romanus.ru )
TN
На сайте с 10.02.2008
Offline
131
#2
- Romanus -:
А чем вас не устроило 2 последовательных редиректа? Они функционируют и проще для понимания.

После нескольких лет в топ 1-3, сайт улетел на 2-3-4 страницы. Копаю везде. Вот добрался до редиректов. Хрен их знает, может у них бот начал уставать после второго перенаправления 😂

- Romanus -
На сайте с 20.01.2015
Offline
91
#3

Teh.Nik,

очень врятли - я на всех сайтах ставлю по 2-3 последовательных редиректа. Проблема врятли в этом.

TN
На сайте с 10.02.2008
Offline
131
#4

В любом случае от объединения хуже не будет и ко всему минус один лишний запрос. Осталось только понять как это сделать.

J
На сайте с 20.02.2014
Offline
120
jkm
#5

Чуть поправить одно правило и расставить в правильном порядке


RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/$ http://www.site.ru/$1 [R=301,L]

RewriteCond %{HTTP_HOST} ^site\.ru$ [NC]
RewriteRule ^(.*)$ http://www.site.ru/$1 [R=301,L]
TN
На сайте с 10.02.2008
Offline
131
#6

jkm, к сожалению не работает как положено. Та же проблема с www

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

У меня вот так:


<IfModule mod_dir.c>
DirectorySlash Off
</IfModule>

RewriteEngine On

RewriteCond %{HTTP_HOST} ^www\.(.+) [NC]
RewriteRule (.*)/*$ http://%1/$1 [R=301,L]

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

Для перенаправления на www скорее всего будет достаточно изменить первый редирект вот на это:


RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule (.*)/*$ http://www.%{HTTP_HOST}/$1 [R=301,L]
Домены и скрипт для коротких ссылок: https://u75.ru/domains-for-shortcuts

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