Apache 2.4重定向直接IP访问

时间:2018-02-09 13:15:01

标签: apache

我试图通过直接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

阿诺

1 个答案:

答案 0 :(得分:0)

默认情况下,当Apache在请求中没有收到域名时(在您的上下文中,它获取IP地址),它会使用它找到的第一个VirtualHost。这里,*:80一个。

在那里,你说RewriteCond,if = ...相反,完全删除RewriteCond并始终强制重定向到https。

喜欢这里:https://wiki.apache.org/httpd/RedirectSSL 或者:http to https apache redirection