У меня есть веб-сайт, к которому я могу получить доступ, указав несколько разных URL-адресов. в веб-браузер. Все эти случаи тоже работают (будут загружены через https
протокол):
lamtakam.com
https://lamtakam.com
https://www.lamtakam.com
http://lamtakam.com -- automatically will be redirected to https which is correct
Хорошо, теперь все в порядке. Единственная проблема заключается в следующем URL:
http://www.lamtakam.com
Он будет загружен по протоколу http
(не https
). Как сделать так, чтобы он тоже перенаправлялся на протокол https
?
Мой сервер использует Linux ubuntu в качестве ОС и apache в качестве веб-сервера.
РЕДАКТИРОВАТЬ: Вот содержимое файла /etc/apache2/sites-available/000-default.conf
:
#ServerName www.example.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/myweb
# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf
RewriteEngine on
RewriteCond %{SERVER_NAME} =lamtakam.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
<Directory /var/www/html/myweb>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
Проблема находится в Вашем переписывала условие на том, когда сделать переписывание. Это установлено только соответствовать пустому домену точно (= lamtakam.com
), и не соответствие www.
субдомен в условии, на которое можно переписать.
Попытайтесь использовать это вместо этого для Вашего переписывать условия и правило:
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^(www\.)?lamtakam\.com$
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [END,NE,R=permanent]
... затем перезапустите Apache и посмотрите, происходит ли перенаправление сайта теперь. Заботьтесь для записи кэша браузера сначала, тем не менее, так, чтобы у Вас не было проблемы с кэшируемыми данными страницы до.
Это повреждается, от какого Ваша конфигурация была настроена, чтобы сделать:
http://
и нет https://
), иwww.lamtakam.com
и lamtakam.com
), иHTTP_HOST
вместо SERVER_NAME
, сохранять домены идентичными. Можно изменить это, чтобы быть %{SERVER_NAME}
в переписать правиле, если Вы желаете (или если Вашему сайту нужно это), хотя я предпочитаю использовать первоначально требуемое имя хоста в HTTP_HOST
.Обратите внимание, что я предлагаю использовать %{HTTP_HOST}
так, чтобы Вы соответствовали фактическому требуемому имени хоста, а не 'имени сервера' тот Apache хранилища.
(этот ответ адаптирован из ответа на % RewriteCond {SERVER_NAME} синтаксис starkeen на StackOverflow),