htaccess重定向非www和http和https

Don*_*Don 15 .htaccess https redirect http

我想:

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

任何http://whatever.example.com不附加www的东西http://www.whatever.example.com.

Gum*_*mbo 35

试试这条规则:

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

这是一个解释:

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