У меня есть два виртуальных хоста на VPS под управлением Ubuntu 18.04 и Apache 2.4.29.
Я буду называть их "project" и "project2"
Я установил SSL-сертификат для «проекта» с LetsEncrypt.
После этого я обнаружил, что он игнорирует все RewriteRules для этого домена. Я ввел очень простую RewriteRule (без условия) просто перенаправить на example.com:
RewriteEngine on
RewriteRule ^(.*)$ http://example.com/$1 [L,R=301]
Я попытался ввести его в файл конфигурации хоста для "проекта", а также в файл .htaccess. В обоих случаях это не имеет никакого эффекта.
Я подтвердил, что файл .htaccess читается, потому что, если я намеренно помещаю в него мусор, я получаю ошибку 500.
phpinfo () подтверждает, что mod_rewrite загружен, и если я запускаю a2enmod rewrite
, он возвращает сообщение «Перезапись модуля уже включена».
Я подтвердил, что поведение ограничено только для виртуального хоста для домена проекта. У меня точно такой же RewriteRule в файле .htaccess для домена "project2", и этот RewriteRule выполняется. Похоже, единственное отличие состоит в том, что я не установил SSL-сертификат для домена «project2».
Я проверил журналы ошибок Apache и не могу найти ничего, что проливает свет на этот вопрос. .
Еще одно неожиданное поведение, которое, я думаю, может быть связано, заключается в том, что я не могу перейти к http://project.com. Это всегда заставляет меня https://project.com. Я не могу найти, где это происходит.
Ниже приведены соответствующие файлы для "проекта" с закомментированными материалами, удаленными для более удобного чтения.
project.conf (/etc/apache2/sites-available/project.conf)
<VirtualHost *:80>
ServerAdmin webmaster@project.com
ServerName project.com
ServerAlias www.project.com
DocumentRoot /var/www/html/project/public
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
<Directory /var/www/html/project/public>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
project-le-ssl.conf (/etc/apache2/sites-available/project-le-ssl.conf)
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerAdmin webmaster@project.com
ServerName project.com
ServerAlias www.project.com
DocumentRoot /var/www/html/project/public
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/project.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/project.com/privkey.pem
</VirtualHost>
</IfModule>
apache2.conf (/etc/apache2/apache2.conf)
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5
User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}
HostnameLookups Off
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
IncludeOptional mods-enabled/*.load
IncludeOptional mods-enabled/*.conf
Include ports.conf
<Directory />
Options FollowSymLinks
AllowOverride None
Require all denied
</Directory>
<Directory /usr/share>
AllowOverride None
Require all granted
</Directory>
<Directory /var/www/html>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
AccessFileName .htaccess
<FilesMatch "^\.ht">
Require all denied
</FilesMatch>
LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %O" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
IncludeOptional conf-enabled/*.conf
IncludeOptional sites-enabled/*.conf
Include /etc/phpmyadmin/apache.conf
.htaccess (/ var / www/html/project/.htaccess) (идентичный файл .htaccess для "project2" находится в / var / www/html/project2/.htaccess)
RewriteEngine on
RewriteRule ^(.*)$ http://example.com/$1 [L,R=301]
Header set X-Robots-Tag "noindex, nofollow"
options-ssl- apache .conf (/etc/letsencrypt/options-ssl-apache.conf)
SSLEngine on
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECD$
SSLHonorCipherOrder on
SSLCompression off
SSLOptions +StrictRequire
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" vhost_combined
LogFormat "%v %h %l %u %t \"%r\" %>s %b" vhost_common
ErrorLog /var/log/apache2/error.log
Это единственные файлы, которые мне известны это имеет отношение к теме, хотя я представляю, что есть другие, о которых я не знаю.
У кого-нибудь есть какие-либо идеи относительно того, что вызывает игнорирование RewriteRule для "проекта"? И что имеет второстепенное значение, кто-нибудь знает, где находятся инструкции, которые не позволяют мне перемещаться http://project.com после установки сертификата SSL?