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

После включения HTTPS на моем сервере Apache2 я получаю 404 ошибки на каждый запрос

Итак, у меня никогда не было опыта работы с SSL / HTTPS, я когда-либо имел дело только со стандартным HTTP. Недавно я начал работу над сайтом, которому потребуется SSL. Итак, конечно, я пошел и исследовал, как это сделать, и начал. Я дошел до стадии успешной установки сертификата SSL - появляется зеленый замок, и сервер отвечает на запросы HTTPS через порт 443. У меня проблема в том, что, что бы я ни делал, я не могу получить какие-либо страницы, которые будут отображаться с использованием HTTPS / SSL, однако они выглядели нормально на порту 80 / HTTP (пока я не перенаправлял HTTP на HTTPS).

Проще говоря, я могу получить доступ к сайту HTTPS абсолютно нормально, однако мои страницы не отправляются, а отправляется 404 для каждого запроса.


/etc/apache2/sites-available/[имя ].conf

<VirtualHost *:80>
    ServerName [serverName]

    RewriteEngine On

    RewriteCond %{HTTP:X-Forwarded-Proto} !https
    RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=302]
</VirtualHost>

<VirtualHost *:443>
    ServerName [serverName]
    ServerAdmin [email]
    DocumentRoot [docRoot]

    # I know the following SSL cert stuff is correct

    SSLEngine On
    SSLCertificateFile [...]/[domain].crt
    SSLCertificateKeyFile [...]/[certificate].key
    SSLCertificateChainFile [...]/[theotherone].crt

    ErrorLog ${APACHE_LOG_DIR}/[custom]_error.log
        CustomLog ${APACHE_LOG_DIR}/[custom]_access.log combined

        <Directory "[docRoot]">

                Options Indexes FollowSymLinks MultiViews

        AllowOverride All
        Order allow,deny
        allow from all

        </Directory>

</VirtualHost>

Я не уверен, есть ли что-нибудь еще, что вы могли бы рассмотреть, или какие-либо другие детали, но если есть, дайте мне знать.

РЕДАКТИРОВАТЬ:

После некоторого поиска в файлах конфигурации я установил, что по какой-либо причине при подключении к HTTPS сервер использует корень документа в конфигурации по умолчанию (/ var / www /), однако эта конфигурация по умолчанию не включена с a2ensite. Я не могу понять, где находится конфигурация, вызывающая это

Не могу точно вспомнить, как я это понял, но где-то наткнулся на то, что предлагало поставить:

<VirtualHost _default_:443>

Вместо того:

<VirtualHost *:443>

После замены мой SSL работает отлично.

Обязательно ли перенаправлять все HTTP-запросы на https? Потому что кажется, что ты пытаешься здесь сделать.

Я предлагаю вам начать с удаления следующих строк из вашей конфигурации:

RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=302]

Подозреваю, что синтаксис там может быть неправильным. Затем попробуйте подключиться еще раз по каждому протоколу http: // и https: //.

Попробуйте отредактировать свой файл, чтобы он выглядел примерно так:

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

Если это не сработает, покажите свой ssl.conf

NameVirtualHost *:80
NameVirtualHost *:443

<VirtualHost *:80>
         <Directory "[docRoot]">
        AllowOverride All
        </Directory>
        DocumentRoot [docRoot]
        ServerName [serverName]
</VirtualHost>

<VirtualHost *:443>
        SSLEngine on
       SSLCertificateFile [...]/[domain].crt
       SSLCertificateKeyFile [...]/[certificate].key
       SSLCertificateChainFile [...]/[theotherone].crt
         <Directory "[docRoot]">
        AllowOverride All
        </Directory>
        DocumentRoot [docRoot]
        ServerName [serverName]
</VirtualHost>