我试图通过直接IP重定向用户访问我的网站。 我使用certbot自动配置重定向http-> https。
到目前为止,我的网站可以从以下网址访问:
https://example.com
https://www.example.com
http://example.com (-> https redirection ok)
http://www.example.com (-> https redirection ok)
example.com (-> https redirection ok)
www.example.com (-> https redirection ok)
问题是:当我在浏览器中输入直接IP地址时,firefox说https://xx.xx.xx.xx
没有安全错误页面,Edge允许不安全的连接。
到目前为止,我使用StackOverflow做的是: 创建一个新的000-catch-all.conf(不确定是否真的有用):
<VirtualHost xx.xx.xx.xx:80>
ServerName example.com
ServerAlias www.example.com
DocumentRoot....
Redirect permanent / https://www.example.com
</VirtualHost>
我的示例虚拟主机:
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
DocumentRoot
RewriteEngine on
RewriteCond %{SERVER_NAME} =www.example.com [OR]
RewriteCond %{SERVER_NAME} =example.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI [END,NE,R=permanent]
</VirtualHost>
我的SSL示例virtualHost:
<VirtualHost *:443>
ServerName example.com
ServerAlias www.example.com
DocumentRoot....
SSLCertificateFile...
</VirtualHost>
所有3个VirtualHost都已启用,apache已重新启动。 无法找到重定向直接IP访问的方法。 任何提示?
THX
阿诺
答案 0 :(得分:0)
默认情况下,当Apache在请求中没有收到域名时(在您的上下文中,它获取IP地址),它会使用它找到的第一个VirtualHost。这里,*:80一个。
在那里,你说RewriteCond,if = ...相反,完全删除RewriteCond并始终强制重定向到https。
喜欢这里:https://wiki.apache.org/httpd/RedirectSSL 或者:http to https apache redirection