LINUX.ORG.RU

.htaccess: (склейка алиасов) + (www -> без www) + (http -> https)

 , , ,


0

2

Прошу помощи. Помогите настроить .htaccess

Есть хостинг, на котором настроен основной домен и пара алиасов к нему:
Основной домен: site0.ru
Алиас #1: site1.ru
Алиас #2: site2.ru

мне надо решить одновременно три задачи в одном .htaccess:
1. Сделать 301-ый редирект www на без www;
2. Сделать 301-ый редирект http на https.
3. Сделать 301-ый редирект алиасов на основной домен;

Options All -Indexes
Options +FollowSymLinks
RewriteEngine On

# 1. Переадресовываю с www на без www
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]

# 2. Переадресовываю с http на https
RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

# 3. Перенаправляю запросы на site0.ru с любого из синонимов сайта
# Здесь происходит ошибка: "При попытке открытия site0.ru произошло слишком много переадресаций"
RewriteCond % !^site0\.ru$ [NC]
RewriteRule ^(.*)$ http://site0.ru/$1 [L,R=301]

В общем, на 3-ем пункте у меня затык получается с зацикленностью переадресаций. Возможно ли решить мою задачу в одном .htaccess? Помогите пожалуйста грамотно составить конфиг.

Options All -Indexes
Options +FollowSymLinks
RewriteEngine On

# 1. Переадресовываю с www на без www
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]

# 2. Переадресовываю с http на https
RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

# 3. Перенаправляю запросы на site0.ru с любого из синонимов сайта
RewriteCond %{HTTP_HOST} ^site1.ru$ [OR,NC]
RewriteCond %{HTTP_HOST} ^www.site1.ru$ [NC]
RewriteCond %{REQUEST_URI} !^/robots.*
RewriteRule ^(.*)$ https://site0.ru/$1 [R=301,L]

RewriteCond %{HTTP_HOST} ^site2.ru$ [OR,NC]
RewriteCond %{HTTP_HOST} ^www.site2.ru$ [NC]
RewriteCond %{REQUEST_URI} !^/robots.*
RewriteRule ^(.*)$ https://site0.ru/$1 [R=301,L]

Будет ли такое такое решение верным? Исправьте пожалуйста, помогите оптимизировать

volodlebedev
() автор топика
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]

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

DonkeyHot ★★★★★
()
Последнее исправление: DonkeyHot (всего исправлений: 1)
Ответ на: комментарий от DonkeyHot

спасибо! в остальном все в порядке? последовательность правильная?

volodlebedev
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.