强制将 HTTP 转换为 HTTPS Centos 6.7 和 Apache 无法正常工作

强制将 HTTP 转换为 HTTPS Centos 6.7 和 Apache 无法正常工作

我尝试添加到 .htaccess 文件

RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://mywebsite.com/$1 [R=301,:]

我也尝试过(在 httpd.conf 文件中)

<VirtualHost *:80>
 RewriteEngine on
 ReWriteCond %{SERVER_PORT} !^443$
 RewriteRule ^/(.*) https://www.mywebsite.com/$1 [NC,R=301,L]
</VirtualHost>

当我尝试通过该网站访问时,它会尝试从地址www.mywebsite.com加载https:// 192.xxx.xxx.xxx

我可以通过以下方式访问https://mywebsite.com

知道我做错了什么或没有设置吗?

谢谢

答案1

这是将 http 重定向到 https 的语法(您不需要使用所有这些配置,使用虚拟主机或 .htaccess,而不是同时使用):

使用虚拟主机:

<VirtualHost *:80>
ServerName 192.xxx.xxx.xxx
ServerAlias mywebsite.com
Redirect 301 / https://mywebsite.com/
</VirtualHost>

或者

<VirtualHost *:80>
ServerName 192.xxx.xxx.xxx
ServerAlias mywebsite.com
RewriteRule (.*) https://mywebsite.com/$1
</VirtualHost>

使用 .htaccess

RewriteCond %{SERVER_PORT} ^80$
RewriteRule .* https://mywebsite.com/%{REQUEST_URI} [R=301,L]

在你的情况下

可能有其他东西与你的重定向交互,因为使用 IP 代替域名是不正常的

检查你的 DNS 配置,确保它为 mywebsite.com 提供服务,而不是 IP

顺便说一下,RewriteCond %{SERVER_PORT} 80将匹配所有包含 80 的端口,因此该规则将应用于 80,800,880,1080,8080 等...

您可以在 /etc/hosts 中添加:

127.0.0.1 localhost
127.0.0.1 mywebsite.com
127.0.0.1 www.mywebsite.com www

您甚至可以将域名设置为服务器 IP,而不是 127.0.0.1

如果需要,你可以设置 Apache 来监听端口 80:

Listen 80

相关内容