【发布时间】:2018-07-18 00:22:00
【问题描述】:
如果满足一些条件并且 .htaccess 中有 if/else 语句,我会尝试重写 url
如果
- REQUEST_URI 为空或“/”
- SERVER_NAME 不包含单词“sam”
- SERVER_PORT 为 443。
然后在前面加上 www。到 URL 并将 /website 附加到 URL 的末尾。
否则
- REQUEST_URI 不为空或不是'/'
- SERVER_NAME 不包含单词“sam”
- SERVER_PORT 为 443。
然后在前面加上 www。到网址。
这是我目前所拥有的,但我不确定这是否是正确的顺序,即使它是正确的,因为它不适合我,也不会发生重定向。
<If "%{REQUEST_URI} == '/' || %{REQUEST_URI} == ''">
RewriteCond %{SERVER_NAME} !sam
RewriteCond %{SERVER_PORT} 443
RewriteRule .* https://www.%{SERVER_NAME}/website [R=301,L]
</If>
<Else>
RewriteCond %{SERVER_NAME} !^sam
RewriteCond %{SERVER_PORT} 443
RewriteRule .* https://www.%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
</Else>
【问题讨论】:
-
在不知道上下文的情况下,您的第二条规则很可能会创建一个无限重定向循环。另外,您是故意使用
SERVER_NAME还是您实际上想要使用HTTP_HOST?