1

我目前有一些规则可用于将http://domain.com定向到https://www.domain.com ,但对于http://www.domain不起作用(我猜它不匹配?) 。 com,它应该重定向到https://www.domain.com。有人可以修改以下内容吗?我已经尝试了很多东西,但都没有成功,这是我第一次使用 .htaccess 重写规则。

TL;DR,我需要重定向到 WWW 和 HTTPS

RewriteEngine On

RewriteRule .? - [E=PROTO:http]

RewriteCond %{HTTPS} =on
RewriteRule .? - [E=PROTO:https]

RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$  %{ENV:PROTO}://www.%{HTTP_HOST}/$1 [R=301,L]

编辑:我找到了以下代码,它有些工作 - 它重定向到https://www.domain.com,但它给出了“重定向太多”错误。

RewriteEngine On
RewriteBase / 
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{HTTP_HOST} (www\.)?(.+)$ [NC]
RewriteRule ^ https://www\.%2%{REQUEST_URI} [L,R=301] 
4

2 回答 2

2

你有没有尝试过这样的事情?

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://www.domain.com/$1 [L,R=301] 

RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ https://www.domain.com/$1 [L,R=301]

最好在服务器的 VirtualHost 中修改它。

NameVirtualHost *:80
 <VirtualHost *:80>
 ServerName www.domain.com
 ServerAlias domain.com
 Redirect permanent / https://www.domain.com/
 </VirtualHost>

 <VirtualHost _default_:443>
 ServerName www.domain.com
 DocumentRoot /www/
 SSLEngine On
 # etc...
</VirtualHost>
于 2013-04-28T10:12:40.957 回答
0

这是我正在使用的规则:

<IfModule mod_rewrite.c>
  RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
  RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L]
</IfModule>

如果有必要,您可以RewriteCond %{HTTPS} !=on将强制删除 https 作为第一个条件...

希望有帮助...

于 2013-04-28T11:48:43.000 回答