我的条件在大多数情况下都可以重定向到我在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}发布于 2017-07-20 11:25:14
虽然我不确定%{HTTP_HOST}是否可以用于测试IP (Apache可能会认为没有主机,如果主机是IP),并且假设您测试了问题中的规则,但它不起作用,那么肯定有改进的空间。
你的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或错误的主机。
https://stackoverflow.com/questions/45204373
复制相似问题