2016-08-03 2 views
1

im пытается перенаправить http на https. Я нашел много ответов, но ничего не работает для меня. Я не знаю, почему, может быть, это ошибка конфигурации apache2? Я пробовал это также в .htaccess, и там тоже ничего не происходит.Переадресация HTTP на HTTPS Apache2

Просто это ошибка:

Bad Request Your browser sent a request that this server could not understand. Reason: You're speaking plain HTTP to an SSL-enabled server port. Instead use the HTTPS scheme to access this URL, please.

Вот мой виртуальный хост файл.

#Redirect HTTP TO HTTPS 

RewriteEngine On 
RewriteCond %{HTTPS} off 
RewriteRule (.*) https://%{SERVER_NAME}/%$1 [R,L] 

#VHOSTS 


<VirtualHost *:443> 
    Servername www.latoya.eu 
    ServerAlias latoya.eu www.latoya.eu 
    Documentroot /var/www/latoya 
    ErrorLog /path/to/log/error.log 
    CustomLog /path/to/log/access.log combined 
    SSLEngine on 
    SSLCertificateFile /path/to/ssl/files/pem.crt 
    SSLCertificateKeyFile /path/to/ssl/files/private.key 
    SSLCertificateChainFile /path/to/ssl/files/pem.ca-bundle 
</VirtualHost> 

<VirtualHost *:443> 
    Servername board.latoya.eu 
    Documentroot /var/www/latoya 
    ErrorLog /path/to/log/error.log 
    CustomLog /path/to/log/access.log combined 
    SSLEngine on 
    SSLCertificateFile /path/to/ssl/files/pem.crt 
    SSLCertificateKeyFile /path/to/ssl/files/private.key 
    SSLCertificateChainFile /path/to/ssl/files/pem.ca-bundle 
</VirtualHost> 

<VirtualHost *:443 *:80> 
    Servername secure.latoya.eu 
    Documentroot /var/www/latoya 
    ErrorLog /path/to/log/error.log 
    CustomLog /path/to/log/access.log combined 
    SSLEngine on 
    SSLCertificateFile /path/to/ssl/files/pem.crt 
    SSLCertificateKeyFile /path/to/ssl/files/private.key 
    SSLCertificateChainFile /path/to/ssl/files/pem.ca-bundle 
</VirtualHost> 

<VirtualHost *:80 *:443> 
    Servername static.kritzelpixel.com 
    Documentroot /var/www/static.kritzelpixel.com 
    ErrorLog /path/to/log/error.log 
    CustomLog /path/to/log/access.log combined 
    SSLCertificateFile /path/to/ssl/files/pem.crt 
    SSLCertificateKeyFile /path/to/ssl/files/private.key 
    SSLCertificateChainFile /path/to/ssl/files/pem.ca-bundle 
</VirtualHost> 
+0

Вам необходимо установить порт 80 с 'SSLEngine off' и портом 443 с' SSLEngine on' – Owen

+0

Спасибо ...! Решена моя проблема – xMizo

ответ

1

Использование «VirtualHost *: 80 *: 443» или наоборот в том же Virtualhost теге совершенно неправильно, так как один VirtualHost не может быть SSL и не SSL одновременно.

Тот факт, что Apache HTTPD не кричит от боли, заключается в том, что вы «можете» использовать разные порты в одном и том же виртуальном хосте, но это, безусловно, не предназначено для совместного использования SSL-порта и не-SSL-порта.

Так что я предлагаю вам исправить вашу конфигурацию, чтобы выглядеть разумно, то есть иметь конкретные виртуальные хосты *: 80 и virtualhost *: 443 отдельно.

В VirtualHost *: 80 записей вы можете перенаправить/https://example.com/ с конкретными именами хостов для вашего случая, чтобы перенаправить с 80 до 443 на одну строку и без необходимости использовать mod_rewrite.

Для перенаправления на SSL mod_rewrite не требуется и излишний.

Кратко:

<VirtualHost *:80> 
ServerName example.com 
Redirect/https://example.com/ 
</VirtualHost> 
<VirtualHost *:443> 
ServerName example.com 
SSLEngine on 
#other directives here 
</VirtualHost> 

И то же самое с остальными именами, если они имеют разные конфигурации.

+0

*: 80 и *: 443 могут быть как SSL, так и не SSL, но по соглашению порт 80, как ожидается, будет не SSL. – Owen

+0

синтаксис, позволяющий ему не мешать ему быть полной аберрацией, которая не должна использоваться для когерентного встряхивания. В конце один виртуальный хост будет SSL или не будет SSL, но не тот и другой. –

Смежные вопросы