我正在尝试创建一个HTACCESS文件,该文件将具有以下规则。我正在尝试使用各种在线指南将一个htaccess文件拼凑在一起,但有一点问题。
我想从http重定向到https。 我想从非www重定向到www。 我希望能够跟踪标准http上的所有子域。
最后一部分是我苦苦挣扎的部分。其他两个规则工作正常。但是,当我尝试访问http://demo.example.com时,它会重定向到我不希望它执行的https。
如何创建某种IF语句或使之工作?
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^example.com$
RewriteRule (.*) https://www.example.com/$1 [R=301,L]
</IfModule>
答案 0 :(得分:0)
您可以在网站根.htaccess中使用此单个规则:
RewriteEngine On
RewriteCond %{HTTPS} !on [OR]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTP_HOST} ^(?:www\.)?(example\.com)$ [NC]
RewriteRule ^ https://www.%1%{REQUEST_URI} [R=301,L,NE]
请确保将此规则保留为您的最高规则,并在新的浏览器中进行测试以避免旧的缓存。
详细信息:
规则主体中有4行。这是详细信息:
OR
条件,如果HTTPS
未开启,则返回true www
,则返回true。此规则的前两个条件之一必须为真。www.example.com
或example.com
,则返回true,因为以wwww
开头是可选的。它还在向后引用example.com
中捕获%1
RewriteRule
,它重定向到https://www.%1%{REQUEST_URI}
,其中%{REQUEST_URI}
是当前请求URI,而%1
是值example.com
,我们在第3行中捕获。 li>