2017-06-04 102 views
1

我无法找到适用于我的工作解决方案。Apache:将所有请求重定向到https://www.domain.tld

这里我设置:

# Redirect non-www to www 
RewriteCond %{HTTP_HOST} !^www\. 
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L] 

# Redirect http to https 
RewriteCond %{HTTP:X-Forwarded-Proto} !https 
RewriteRule^https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 

的每个部分工作得非常好,但不在一起。 https重定向的部分总是重定向到https://domain.tld,所以没有www,它被忽略。 有人知道解决方案吗?

在此先感谢。

回答

0

强制HTTPS,包括WWW

RewriteEngine On 
RewriteCond %{HTTP_HOST}#%{HTTPS}s !^www\.([^#]+)#(?:off|on(s)) [NC] 
RewriteRule ^$ http%2://www.%1%{REQUEST_URI} [R=301,L] 

应一次性都做,否则你可以单独的规则,并可能是这样说:如果重写不

# Rewrite to WWW 
RewriteEngine On 
RewriteCond %{HTTP_HOST} !^www\. [NC] 
RewriteRule ^(.*) https://www.%{SERVER_NAME}%{REQUEST_URI} [L,R=301] 

# Rewrite HTTP to HTTPS 
RewriteCond %{HTTPS} off 
RewriteRule ^(.*) https://%{SERVER_NAME}%{REQUEST_URI} [L,R=301] 

工作为non-wwwwww然后有可能在服务器上设置的其他地方(可能在httpd.conf)的其他地方(可能在httpd.conf)重定向VirtualHost 301 ...它看起来类似于:

的httpd.conf

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC] 
    RewriteRule ^(.*)$ https://example.com$1 [L,R=301] 
</IfModule> 

如果在httpd.conf设置可以覆盖.htaccess改写为non-wwwwww

+0

谢谢,但它也不起作用 – satriani

+0

“不工作”无法解释......什么是行为? –

+0

''http://domain.tld https://domain.tld和https://www.domain.tld重定向到http:// www。/'' ''http://www.domain。 tld - > 404 Page Not Found'' – satriani

相关问题