3

Я установил новый виртуальный хост для нового сайта на моем сервере, но он работает странно, несмотря на то, что он имеет те же настройки, что и мой исходный сайт.

Я хочу, чтобы все запросы были перенаправлены на HTTPS, проще говоря. На моем основном (рабочем) сайте это указано в конфигурации VirtualHost , а в .htaccess указано дополнительное правило, разрешающее короткие URL-адреса. В частности, проблема на нерабочем сайте состоит в том, что если я пытаюсь перейти на example.com/url , перенаправление переходит на https://example.comurl и удаляет необходимые / из URL.

Я скопировал точную конфигурацию в новый файл VirtualHost и .htaccess с рабочего сайта, поэтому я не уверен, почему он не работает на новом. Все мои DNS-записи для обоих сайтов используют записи A, чтобы указывать на него, никаких перенаправлений или чего-либо еще не происходит на уровне DNS. Я попытался поставить / в конце строк Redirect в приведенном ниже коде, но проблема не была решена. Сервер Ubuntu 14.04, и Apache версии 2.4.7. Оба сайта представляют собой отдельные доменные имена с отдельными файлами .conf , но они размещены на одном сервере с одинаковым IP-адресом. Как я могу исправить эту проблему?

Соответствующий код в VirtualHost:

<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
    Redirect permanent / https://example.com
</VirtualHost>

И в .htaccess:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule !.*\.html$ %{REQUEST_FILENAME}.html [L]

В случае, если это помогает / имеет значение, это конфигурация SSL в моем файле VirtualHost, хотя она находится в самом начале файла вне всех других директив:

SSLCipherSuite AES128+EECDH:AES128+EDH
SSLProtocol All -SSLv2 -SSLv3
SSLHonorCipherOrder On
Header always set Strict-Transport-Security "max-age=63072000; includeSubdo$
Header always set X-Frame-Options DENY
Header always set X-Content-Type-Options nosniff

SSLCompression off
SSLUseStapling on
SSLStaplingCache "shmcb:logs/stapling-cache(150000)"

И это конфиг специально для VirtualHost для сайта:

<VirtualHost *:443>
    ServerName example.com
    ServerAdmin user@example.com
    DocumentRoot /var/www/example
    ErrorLog ${APACHE_LOG_DIR}/errorexample.log
    Options -Indexes

    SSLEngine on
    SSLCertificateFile /etc/ssl/example/examplecert.crt
    SSLCertificateKeyFile /etc/ssl/example/examplekey.key
    SSLCertificateChainFile /etc/ssl/chain/class1.pem
</VirtualHost>

1 ответ1

4

Чтобы перенаправить на HTTPS:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

Но вам нужно иметь виртуальный хост для ssl:

NameVirtualHost *:443
<VirtualHost *:443>
    ServerName example.com
    ServerAlias www.example.com
    SSLEngine on
    SSLCertificateFile    /etc/apache2/ssl/apache.crt
    SSLCertificateKeyFile /etc/apache2/ssl/apache.key
</VirtualHost>

ПРИМЕЧАНИЕ: вам нужно создать сертификат SSL ... но для этого есть отличный учебник !

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .