在大多数情况下,我的条件在重定向到我的安全站点 https://mysite.example.com
时有效,除非用户输入 https://10.10.10.10
在这种情况下,会发生证书错误,这是可以预料的。但如果用户决定继续,我想重定向到我的安全站点。这可能吗。请参阅下面我的代码。
RewriteEngine On
RewriteCond %{HTTP_HOST} ^10\.10\.10\.10$
RewriteRule ^(.*)$ `https://mysite.example.com`/$1 [L,R=301]
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
最佳答案
虽然我不确定 %{HTTP_HOST}
可用于测试 IP(如果主机是 IP,Apache 可能会认为没有主机),并假设您测试了规则从你的问题来看它没有用,肯定有改进的余地。
您的 SSL 证书仅与一个主机名相关联(除非您有通配符证书,但那将是一种边缘情况),因此了解您的网站是否通过其 IP 或其他域别名访问并不重要;如果您希望将其重定向到 https 和特定主机名,那么这一切都很重要。
顺便说一句,如果您更改 IP,则必须同时更改 DNS 和重写规则,这并不理想。
所以让我们简化一下:
RewriteEngine On
RewriteCond %{HTTPS} !on [OR]
RewriteCond %{HTTP_HOST} !^mysite.example.com$
RewriteRule (.*) https://mysite.example.com%{REQUEST_URI} [L,R=301]
请注意,您还需要在目标中硬编码 mysite.example.com
,因为如果满足第二个条件,它可能是 IP 或错误的主机。
关于使用 SSL IP 重写 Apache,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45204373/