Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 方法将不正确的URL重定向到HTTPS站点?_Html_Apache_Http_Https - Fatal编程技术网

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仍然不正确。