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