Как перенаправить субдомен www на протокол https? [закрыто]

У меня есть веб-сайт, к которому я могу получить доступ, указав несколько разных 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>
-1
задан 9 August 2018 в 09:48

1 ответ

Проблема находится в Вашем переписывала условие на том, когда сделать переписывание. Это установлено только соответствовать пустому домену точно (= lamtakam.com), и не соответствие www. субдомен в условии, на которое можно переписать.

Попытайтесь использовать это вместо этого для Вашего переписывать условия и правило:

RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^(www\.)?lamtakam\.com$
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [END,NE,R=permanent]

... затем перезапустите Apache и посмотрите, происходит ли перенаправление сайта теперь. Заботьтесь для записи кэша браузера сначала, тем не менее, так, чтобы у Вас не было проблемы с кэшируемыми данными страницы до.

Это повреждается, от какого Ваша конфигурация была настроена, чтобы сделать:

  1. Требование, что HTTPS не идти (т.е. запрос был http:// и нет https://), и
  2. При требовании требуемого имени хоста / домен соответствует указанному regex (который соответствует обоим www.lamtakam.com и lamtakam.com), и
  3. Делает переписать использование значения HTTP_HOST вместо SERVER_NAME, сохранять домены идентичными. Можно изменить это, чтобы быть %{SERVER_NAME} в переписать правиле, если Вы желаете (или если Вашему сайту нужно это), хотя я предпочитаю использовать первоначально требуемое имя хоста в HTTP_HOST.

Обратите внимание, что я предлагаю использовать %{HTTP_HOST} так, чтобы Вы соответствовали фактическому требуемому имени хоста, а не 'имени сервера' тот Apache хранилища.

(этот ответ адаптирован из ответа на % RewriteCond {SERVER_NAME} синтаксис starkeen на StackOverflow),

1
ответ дан 28 October 2019 в 04:38

Другие вопросы по тегам:

Похожие вопросы: