Apache 2.4 重定向直接 IP 访问

Posted

技术标签:

【中文标题】Apache 2.4 重定向直接 IP 访问【英文标题】:Apache 2.4 redirect direct IP access 【发布时间】:2018-07-20 06:38:51 【问题描述】:

我正在尝试重定向用户,使其不再通过直接 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 允许不安全连接。

到目前为止,我使用 *** 所做的是: 创建一个新的 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 *:443>
ServerName example.com
ServerAlias www.example.com
DocumentRoot....
SSLCertificateFile...
</VirtualHost>

所有 3 个 VirtualHost 都已启用,apache 已重新启动。 找不到重定向直接 IP 访问的方法。 有什么提示吗?

谢谢

阿诺

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

以上是关于Apache 2.4 重定向直接 IP 访问的主要内容,如果未能解决你的问题,请参考以下文章

用于将 ip 重定向到主机名的 Apache httpd.conf

Apache 2.4 精确重定向匹配字符串

apache 2.4中的htaccess重定向301不起作用

Apache 2.4 将 https 重定向到另一个端口

重定向 HTTP 表单帖子

Apache 2.4 将本地虚拟主机重定向到 https 而不是 http