目标是每一页(减去一个文件夹)的网站重定向到 https。我发现了以下情况才不是执行此操作。一个文件夹包含一个子域名。我们将其命名为 mahogany.com。
編輯:修改規則
RewriteEngine On
RewriteBase /
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^www.site1\.mobi [NC,OR]
RewriteCond %{HTTP_HOST} ^site1\.mobi [NC,OR]
RewriteCond %{HTTP_HOST} !^mahogany\.com [NC]
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
如果有人在其浏览器中输入site1.mobi
或www.site1.mobi
,则文档根目录 htaccess 中的上述内容的 apache 将不会重定向。
上面的代码有什么问题?是否需要添加一行代码来排除 mahogany.com?
答案1
的默认逻辑运算符RewriteCond
是“和”;HTTP_HOST
不能同时是这两个运算符,因此条件永远不会满足。
尝试这个:
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^www\.site1\.mobi$ [NC,OR]
RewriteCond %{HTTP_HOST} ^site1\.mobi$ [NC]
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
另外,您提到了目录例外,但我没有看到其中有例外。您可以通过额外添加RewriteCond
或更改RewriteRule
条件来添加例外:
RewriteRule ^excepted/location/.* https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]