mod_rewrite www到no-www和http到https同时

时间:2014-07-06 05:42:26

标签: apache .htaccess mod-rewrite

我目前有mod_rewrite,我找到的代码将所有请求重定向到没有www的相同网址。

我现在要做的是配置Apache mod_rewrite以执行以下操作,而不会浪费任何操作/其他重定向。

http:// to https://

http://www. to https://

我不熟悉它,但在伪代码中,http(s)://(www.)domain.comhttps://domain.com仅针对顶级网址,不包括子域名。

3 个答案:

答案 0 :(得分:2)

两种情况都需要一条规则:

将此代码放入DOCUMENT_ROOT/.htaccess文件中:

RewriteEngine On

RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteRule ^ https://domain.com%{REQUEST_URI} [NE,R=301,L]

答案 1 :(得分:2)

是的,有一种方法可以将这些操作合并为一个规则:

RewriteCond %{HTTP_HOST} !=example.com [OR]
RewriteCond %{HTTPS} !=on
RewriteRule ^/(.*) https://example.com/$1

答案 2 :(得分:0)

这个对我有用。我尝试了上面的那个,但它在旧浏览器上创建了一个重定向循环。

RewriteCond %{SERVER_PORT} !^443$ 
RewriteRule ^(.*)$ https://example.com/$1 [R=301,L] 

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