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

CentOS - Apache HTTPS не читает htaccess

У меня возникла проблема с перезаписью apache на CentOS.

Если я загружаю свой сайт по HTTP, он работает нормально. Правила перезаписи работают. Как только я меняю его на HTTPS, правила перезаписи не работают.

После некоторых тестов и просмотра потоков я понял, что каким-то образом apache не получает файл .htaccess, если доступ к веб-сайту осуществляется через HTTPS.

Что я сделал для тестирования, так это вставил deny from all в файл .htaccess. Когда я получаю доступ http://my.domain.com он показывает Запрещенную ошибку. Когда я получаю доступ через https://my.domain.com Я все еще могу загрузить страницу, это означает, что .htaccess не читается.

Я проверил httpd.conf и ssl.conf, а также убедился, что AllowOverride All установлен. Есть ли еще что-нибудь, что я мог бы пропустить?

Вот моя конфигурация httpd.conf:

<VirtualHost *:443>
    SSLEngine On
    SSLCertificateFile /etc/httpd/ssl/my.domain.crt
    SSLCertificateKeyFile /etc/httpd/ssl/my.domain.key
    SSLCACertificateFile /etc/httpd/ssl/caroot.crt

     ServerAdmin webmaster@domain.com
     ServerName my.domain.com
     ServerAlias my.domain.com
     DocumentRoot /var/www/my.domain.com/public_html/
        <Directory />
            Options FollowSymLinks
            AllowOverride All
        </Directory>
        <Directory /var/www/my.domain.com/public_html/>
            Options Indexes FollowSymLinks ExecCGI MultiViews
            #RewriteEngine on 
            AllowOverride All
            Order allow,deny
            allow from all
        </Directory>

     ErrorLog /var/www/my.domain.com/logs/ssl-error.log
     CustomLog /var/www/my.domain.com/logs/ssl-access.log combined
</VirtualHost>

А ниже мой файл .htaccess, помещенный в /var/www/my.domain.com/public_html/

AddType text/x-component .htc
Options FollowSymLinks
<IfModule mod_rewrite.c>
    RewriteEngine on 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME}\.php -f 
    RewriteRule ^(.*)$ $1.php
</IfModule>

<IfModule !mod_rewrite.c>
    ErrorDocument 404 /index.php
</IfModule> 

Ниже приведена конфигурация порта 80:

<VirtualHost *:80>
     ServerAdmin webmaster@domain.com
     ServerName my.domain.com
     ServerAlias my.domain.com
     DocumentRoot /var/www/my.domain.com/public_html/
        <Directory />
                Options FollowSymLinks
                AllowOverride All
        </Directory>
        <Directory /var/www/my.domain.com/public_html/>
                Options Indexes FollowSymLinks ExecCGI MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>

     ErrorLog /var/www/my.domain.com/logs/error.log
     CustomLog /var/www/my.domain.com/logs/access.log combined
</VirtualHost>

Убедитесь, что ваша глобальная конфигурация Apache имеет следующую строку:

AccessFileName .htaccess

Превращаю мой комментарий в ответ:

Есть ли другой виртуальный хост по умолчанию? Поскольку все, что вы показали, кажется правильным, я подозреваю, что есть еще что-то, препятствующее правильной работе. Скорее всего, файлы conf по умолчанию и / или их настройки по умолчанию.

Проверьте настройки по умолчанию в ssl.conf, особенно ServerName и ServerAlias. Также httpd.conf