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

Как иметь 2 доменных имени, указывающих на один и тот же веб-сайт, одно http, а другое https

Сейчас я работаю над переписыванием example.com, весь сайт HTTPS, используя это:

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]

Мне нужно много файлов на этом же веб-сайте, доступных через второе доменное имя и через HTTP, например: http://example.net/files/....

Я пробовал добавить example.net как ServerAlias но, конечно, это просто перенаправление, а затем переписывание на https://example.net/files

Я скопировал правило перезаписи из Интернета и не уверен, как правильно его изменить.

Я думал о том, чтобы изменить правило перезаписи на что-то вроде:

RewriteRule ^example.com/?(.*) https://example.com/$1 [R,L]

так что URL-адреса переписываются, только если они включают example.com Тогда нужно ли мне правило перезаписи для самого домена TLD, а не для этой записи с подстановочным знаком?

Пожалуйста, может ли кто-нибудь помочь с правильным способом достижения этого, чтобы запросы к ServerAlias (example.net) не переписываются?

Если вы хотите указать два домена на один и тот же контент. например. example.com и example.net. Затем создайте отдельные виртуальные хосты для каждого домена, но укажите их на тот же корень документа. Добавьте одну запись VirtualHost с 80 для HTTP (http://example.com) и еще одна запись домена с 443 с HTTPS (https://example.net) и назначьте требовать записи SSL.

Как предлагает Сунил, вы можете создавать отдельные виртуальные хосты, и тогда перенаправление SSL будет происходить только на первом (т.е. example.com порт 80). (Вы также можете избежать mod_rewrite и просто использовать один mod_alias Redirect, что было бы предпочтительнее.)

Однако вы также можете сделать то, что предлагали, и создать ServerAlias для example.net (ваш Другой домен) и включить состояние (т.е. REwriteCond директива) в вашем текущем перенаправлении, который перенаправляет только example.com домен. Например:

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^(www\.)?example\.com [NC]
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]

Обратите внимание, что это действительно должно быть 301 (постоянное) перенаправление, если вы убедились, что он работает нормально. т.е. [R=301,L].