regex - 如何结合两个 Apache htaccess 重定向条件(http 到 https 和非 www 到 www)

标签 regex apache .htaccess mod-rewrite redirect

我有两个独立工作的重定向条件,但我想避免两个条件都满足的情况(这导致两个重定向步骤而不是一个)

我必须承认我不擅长 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]

当两个条件都满足时,多重重定向结果的输出如下所示:

Output of the multiple redirect result when both conditions are satisfied is shown

最佳答案

您可以使用 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/

相关文章:

PHP preg_split() 不捕获字符串中的分割

java - 替换字符串中的多个子字符串

python - 如何使用 Beautiful Soup 获取 CSS 链接

c++ - 使用 C++ 编译器编译 Apache

javascript - 使用重写规则后未加载 CSS 、 js 、 jpg png 帮助我

php - 具有特定长度的任何字符串的正则表达式模式

apache - 在 http ://localhost/(instead http://localhost/phpmyadmin) 中安装 phpMyAdmin

wordpress - .htaccess 与 SilverStripe 和 WordPress

php - 如何限制对主域的访问并允许附加域

php - Apache 和 IIS 7 一起运行