1

我从 stackoverflow 的一个问题中提取了以下代码(在多域站点上使用 mod_rewrite htaccess 强制执行 www 和尾部斜杠)并直接从apache.org提取。

该方案包括三个要求:

  1. 确保生产域始终以 www 开头。
  2. 不要附加www。到 beta.domain.tld、dev.domain.tld、mobile.domain.tld
  3. 最后确保每个 url 都被重写为 https。

我想出了以下条件:

# Enforce www, if no subdomain is given
RewriteCond %{HTTP_HOST} !^(beta|dev|mobile|www)\.
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI}/ [R]

# Enfore SSL for all Domains
RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]

上述规则按预期工作,尽管一个案例不起作用

https://domain.tld/未正确重定向到https://www.domain.tld/

有人可以帮我解决这个问题吗?

4

1 回答 1

2

尝试用这个替换你的 2 代码:

RewriteCond %{HTTP_HOST} !^(?:beta|dev|mobile|www)\. [NC]
RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [R=302,L]

RewriteCond %{HTTPS} =off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=302,L]
于 2013-06-28T13:58:14.190 回答