我有两个独立工作的重定向条件,但我想避免两个条件都满足的情况(这导致两个重定向步骤而不是一个)
我必须承认我不擅长 Apache 正则表达式,所以我从网上下载了它们。知道如何将两者结合起来(A 或 B 有点逻辑与正则表达式)吗?
代码如下:
RewriteEngine On
# redirect from http to https
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
# redirect from non-www to www https
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
当两个条件都满足时,多重重定向结果的输出如下所示:
最佳答案
您可以使用 OR
条件子句将两个规则合二为一:
RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ https://www.domain.com%{REQUEST_URI} [R=301,L,NE]
只需将 www.domain.com
替换为您的实际域名即可。此外,最好在新浏览器中对此进行测试以避免 301 缓存问题。
关于regex - 如何结合两个 Apache htaccess 重定向条件(http 到 https 和非 www 到 www),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23919532/