
Проблемы:
- https://www.example.com-> следует перенаправить наhttp://www.example.com, не делает, выдает Код ошибки: ssl_error_rx_record_too_long без перенаправления, error_log: "[error] [клиент 127.0.1.3] Недопустимый метод в запросе \x16\x03\x01
- https://www.example.com/fundprocess.html-> следует перенаправитьhttps://example.com/fundprocess.html, выдает Код ошибки: ssl_error_rx_record_too_long без перенаправления, error_log: "[error] [client 127.0.1.3] Недопустимый метод в запросе \x16\x03\x01"
- https://example.com-> Следует перенаправить наhttp://www.example.com, не
- http://example.com/-> Следует перенаправить наhttp://www.example.com, не
- http://example.com/fundprocess.htmlследует перенаправить наhttps://example.com/fundprocess.html, не
В журнале перезаписи нет записей об этих ошибках.
Конфигурация vhost
<VirtualHost 127.0.1.3:80>
ServerAdmin [email protected]
ServerName www.example.com
DocumentRoot /var/www/html
<Directory /var/www/html>
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
Redirect permanent /fundprocess.html https://example.com/fundprocess.html
Redirect permanent /fund_process.php https://example.com/fund_process.php
ErrorLog /var/log/apache2/example.com-error_log
TransferLog /var/log/apache2/example.com-access_log
LogLevel warn
RewriteLog /var/log/apache2/example.com-rewrite_log
RewriteLogLevel 9
</VirtualHost>
<VirtualHost 127.0.1.2:80>
ServerAdmin [email protected]
ServerName example.com
DocumentRoot /var/www/html
RewriteCond %{REQUEST_URI} !fundprocess.html [NC]
RewriteCond %{REQUEST_URI} !fund_process.php [NC]
RewriteRule (.*) http://www.example.com/$1 [R=301,L]
RewriteCond %{REQUEST_URI} fundprocess.html [NC]
RewriteCond %{REQUEST_URI} fund_process.php [NC]
RewriteRule (.*) https://example.com/$1 [R=301,L]
</VirtualHost>
<VirtualHost 127.0.1.3:443>
ServerAdmin [email protected]
ServerName www.example.com
DocumentRoot /var/www/html
RewriteCond %{REQUEST_URI} !fundprocess.html [NC]
RewriteCond %{REQUEST_URI} !fund_process.php [NC]
RewriteRule (.*) http://www.example.com/$1 [R=301,L]
RewriteCond %{REQUEST_URI} fundprocess.html [NC]
RewriteCond %{REQUEST_URI} fund_process.php [NC]
RewriteRule (.*) https://example.com/$1 [R=301,L]
</VirtualHost>
<VirtualHost 127.0.1.2:443>
ServerAdmin [email protected]
ServerName example.com
DocumentRoot /var/www/html
<Directory /var/www/html>
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_URI} !fundprocess.html [NC]
RewriteCond %{REQUEST_URI} !fund_process.php [NC]
RewriteRule (.*) http://www.example.com/$1 [R=301,L]
ErrorLog /var/log/apache2/example.com-ssl-error_log
TransferLog /var/log/apache2/example.com-ssl-access_log
LogLevel warn
RewriteLog /var/log/apache2/example.com-rewrite_log
RewriteLogLevel 9
SSLEngine On
SSLCertificateFile /etc/certs/example.crt
SSLCertificateKeyFile /etc/certs/example.key
SetEnvIf User-Agent ".*MSIE.*" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
</VirtualHost>
решение1
Это не проблема с перенаправлением, это проблема с SSL (запрос должен быть расшифрован до того, как произойдет перенаправление).
Есть ли Listen 443
где-нибудь в конфигурации Apache? Вставьте его, если нет, рядом с частью Listen 80. Вы запускаете какие-либо другие веб-сайты SSL на этом сервере? Убедитесь, что они не используют тот же IP-адрес. Наконец, если у вас есть сертификат SSL, который работает в другом месте, попробуйте использовать его для этого сайта — он выдаст предупреждение в браузере, но если вы примете предупреждение, он должен перенаправить — тогда вы будете знать, что проблема в вашем сертификате SSL.
решение2
ssl_error_rx_record_too_long возникает, когда Apache ожидает SSL, а получает http.
Убедитесь, что все запросы порта 443 попадают на виртуальный хост с SSLEngine On
. Вам нужно исправить ваш <VirtualHost 127.0.1.3:443>
.
Также ваш сертификат должен работать как для example.com, так и для *.example.com. В противном случае ваши клиенты будут получать уродливые предупреждения вместо перенаправления.