htaccess重定向非www和http和https

时间:2010-01-06 18:12:10

标签: http .htaccess redirect https

我想:

  • http://example.com重定向到:http://www.example.com
  • https://example.com重定向到:https://www.example.com

任何http://whatever.example.com的内容都不会像http://www.whatever.example.com那样添加www。

2 个答案:

答案 0 :(得分:35)

尝试此规则:

RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

以下是解释:

  1. 第一个条件测试HTTP标头字段主机是否具有所需格式(仅包含一个句点)。
  2. 第二个条件测试 HTTPS 变量(值onoff)和s的值的连锁值(所以{{} 1}}或ons)等于offs并捕获ons。这意味着如果s评估为%{HTTPS}s,则第一个匹配组为ons,否则为空。
  3. 规则将匹配所有请求,因为每个字符串都有一个开头(标有s),如果两个条件都为真,则将它们重定向到评估值^。其中http%1://www.%{HTTP_HOST}%{REQUEST_URI}是上一个条件的第一个匹配组(%1如果是HTTPS,否则为空),s是请求的HTTP 主机并且{{ 1}}是请求的绝对URL路径。

答案 1 :(得分:2)

尝试将此RewriteCond添加到.htaccess文件中以仅捕获SSL - 然后对标准http执行相同的操作。

RewriteCond %{HTTPS} on