Сейчас я работаю над переписыванием 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]
.