Назад | Перейти на главную страницу

правила перезаписи apache, без www, https

У меня есть два приложения на одном сервере и я использую правила перезаписи apache для перенаправления:

Все работает нормально, кроме одного случая:
запрос www.test2.test.eu перенаправляется на https://www.test1.com содержание

Как мне его правильно настроить?


Перезаписывает в конфигурационный файл домена test1.com:
ServerName test1.com
RewriteCond% {HTTP_HOST} ^ www.test1.com $ [NC]
RewriteRule ^ (. *) $ https://www.test1.com/1 доллар США [R = 301]

RewriteCond% {SERVER_PORT}! ^ 443 $
RewriteRule ^. * $ Https: //% {SERVER_NAME}% {REQUEST_URI}


Переписывает в конфигурационный файл домена test2.test.eu:
Имя сервера test2.test.eu
RewriteCond% {HTTP_HOST} ^ www.test2.test.eu $ [NC]
RewriteRule ^ (. *) $ https://www.test2.test.eu/1 доллар США [R = 301]

RewriteCond% {SERVER_PORT}! ^ 443 $
RewriteRule ^. * $ Https: //% {SERVER_NAME}% {REQUEST_URI}

Любые предложения очень ценятся.
С уважением.

Я думаю, что ваша первая конфигурация vritualhost действует по умолчанию для любого запроса на хостах, не соответствующих 'test1.com' и 'test2.test.eu'. Попробуйте добавить эту строку ServerAlias, чтобы увидеть, поступает ли запрос в соответствующий файл конфигурации.

Изменяет конфигурационный файл домена test2.test.eu:

ServerName test2.test.eu
ServerAlias www.test2.test.eu *.test2.test.eu
RewriteCond %{HTTP_HOST} ^www.test2.test.eu$ [NC]
RewriteRule ^(.*)$ https://www.test2.test.eu/$1 [R=301]

RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^.*$ https:// %{SERVER_NAME}%{REQUEST_URI}

Это явно указывает apache, что запросы к «www.test2.test.eu» должны обрабатываться этой конфигурацией. Вторая запись в ServerAlias ​​со звездочкой предоставляет подстановочный знак, так что даже если запрос приходит для «wwww.test2.test.eu» или «xxx.test2.test.eu», правильная конфигурация apache будет обрабатывать его. Используя подстановочный знак, вы можете опустить первую запись, например:

ServerName test2.test.eu
ServerAlias *.test2.test.eu
RewriteCond %{HTTP_HOST} ^www.test2.test.eu$ [NC]
RewriteRule ^(.*)$ https://www.test2.test.eu/$1 [R=301]

RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^.*$ https:// %{SERVER_NAME}%{REQUEST_URI}  

и он должен работать так же, хотя ваша первая перезапись в любом случае не поймает имена хостов, отличные от «www».