Html 方法将不正确的URL重定向到HTTPS站点?
我已在以下网站上设置了一个网站:Html 方法将不正确的URL重定向到HTTPS站点?,html,apache,http,https,Html,Apache,Http,Https,我已在以下网站上设置了一个网站: https://foo.com 如果来自以下URL的流量: http://foo.com http://www.foo.com https://www.foo.com 将自动重定向到那里。也就是说,若有人在浏览器中键入下面三个URL中的一个,我希望它立即将显示的URL更改为https://foo.com我想在https://foo.com在服务器上,就像某人键入了https://foo.com 实现这一目标的方法中哪一种最好?我正在使用Apache 另外,S
https://foo.com
如果来自以下URL的流量:
http://foo.com
http://www.foo.com
https://www.foo.com
将自动重定向到那里。也就是说,若有人在浏览器中键入下面三个URL中的一个,我希望它立即将显示的URL更改为https://foo.com
我想在https://foo.com
在服务器上,就像某人键入了https://foo.com
实现这一目标的方法中哪一种最好?我正在使用Apache
另外,SSL证书是为
foo.com
而不是www.foo.com
签名的,是否可以从https://www.foo.com
不发出证书警告?或者我需要为www.foo.com
获取第二个证书吗?所有非SSL站点都可以使用vhost文件或.htaccess文件中的重写进行重定向(假设您有*.foo.com foo.com服务器别名)
对于每个拼写错误的ssl URL,您都需要一个证书,否则当人们试图连接到它们时,它们将出现证书错误。完成后,您可以重定向它们
假设已设置服务器别名,并且已启用mod_rewrite,则需要以下重写规则:
RewriteRule (.*) https://foo.com/$1 [R=301,L]
所有非SSL站点在vhost文件或.htaccess文件中使用重写重定向都不会有问题(假设您有*.foo.com foo.com的服务器别名) 对于每个拼写错误的ssl URL,您都需要一个证书,否则当人们试图连接到它们时,它们将出现证书错误。完成后,您可以重定向它们 假设已设置服务器别名,并且已启用mod_rewrite,则需要以下重写规则:
RewriteRule (.*) https://foo.com/$1 [R=301,L]
未经测试但值得一试
将其附加到httpd.conf
<VirtualHost *:80>
ServerName foo.com
ServerAlias www.foo.com
DocumentRoot /var/www/foo
</VirtualHost>
<VirtualHost *:443>
ServerName foo.com
DocumentRoot /var/www/foo
SSLEngine on
SSLCertificateFile /etc/ssl/certs/certificate.crt
SSLCertificateKeyFile /etc/ssl/certs/app_foo_com.key
SSLCertificateChainFile /etc/ssl/certs/foo.ca.crt
ErrorLog /var/log/ssl_engine.log
</VirtualHost>
ServerName foo.com
ServerAlias www.foo.com
DocumentRoot/var/www/foo
ServerName foo.com
DocumentRoot/var/www/foo
斯伦金安
SSLCertificateFile/etc/ssl/certs/certificate.crt
SSLCertificateKeyFile/etc/ssl/certs/app\u foo\u com.key
SSLCertificateChainFile/etc/ssl/certs/foo.ca.crt
ErrorLog/var/log/ssl_engine.log
未经测试但值得一试将其附加到httpd.conf
<VirtualHost *:80>
ServerName foo.com
ServerAlias www.foo.com
DocumentRoot /var/www/foo
</VirtualHost>
<VirtualHost *:443>
ServerName foo.com
DocumentRoot /var/www/foo
SSLEngine on
SSLCertificateFile /etc/ssl/certs/certificate.crt
SSLCertificateKeyFile /etc/ssl/certs/app_foo_com.key
SSLCertificateChainFile /etc/ssl/certs/foo.ca.crt
ErrorLog /var/log/ssl_engine.log
</VirtualHost>
ServerName foo.com
ServerAlias www.foo.com
DocumentRoot/var/www/foo
ServerName foo.com
DocumentRoot/var/www/foo
斯伦金安
SSLCertificateFile/etc/ssl/certs/certificate.crt
SSLCertificateKeyFile/etc/ssl/certs/app\u foo\u com.key
SSLCertificateChainFile/etc/ssl/certs/foo.ca.crt
ErrorLog/var/log/ssl_engine.log
www.foo.com的重定向必须在DNS级别,才能不接收证书错误。CName可能有效,但我不确定。来自www.foo.com的重定向必须在DNS级别,才能不接收证书错误。CName可能可以工作,但我不确定。当你说重写-你是指mod_rewrite吗?@AndrewTomazos深究是的,mod_rewrite module rewrite重写规则可以放在虚拟主机的httpd.conf文件中,也可以放在docroot.htaccess文件中。@AndrewTomazos深究。您是否能够查看您的服务器是否已启用此模块?这很常见。当你说重写-你是指mod_rewrite吗?@AndrewTomazos Fathomling是的,mod_rewrite module rewrite重写规则可以放在虚拟主机的httpd.conf文件中,也可以放在docroot.htaccess文件中。@AndrewTomazos Fathomling完全正确。您是否能够查看您的服务器是否已启用此模块?这很常见。是的,但这不会重定向它们。浏览器中显示的URL仍然不正确。是,但这不会重定向它们。浏览器中显示的URL仍然不正确。