Я настроил новый виртуальный хост для нового сайта на своем сервере, но он ведет себя странно, несмотря на то, что у него точно такие же настройки, как у моего исходного сайта.
Я хочу, чтобы все запросы перенаправлялись на HTTPS, проще говоря. На моем основном сайте (рабочем) у меня это указано в конфиге VirtualHost
, а в .htaccess
у меня указано дополнительное правило, разрешающее короткие URL. Конкретно проблема на нерабочем сайте в том, что если я пытаюсь перейти на example.com/url
, то редирект идет на https://example.comurl
и удаляет нужное /
из URL.
Я скопировал точную конфигурацию на новый VirtualHost
и .htaccess
файл с рабочего сайта, поэтому не уверен, почему это не работает на новом. Мои записи DNS для обоих сайтов используют записи A, чтобы указывать на него, никаких перенаправлений или чего-либо еще не происходит на уровне DNS. Я пробовал вставлять a /
в конце строк 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 [email protected]
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
Для перенаправления на 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-сертификат... но естьотличный урокдля этого!