2017-08-29 65 views
-1

我有一个简单的htaccess重定向规则:.htaccess中设置HTTPS作为默认的,所以重定向到/将跳过第一个HTTP重定向

RewriteRule ^directory$ / [R=301,L] 

目前执行以下操作重定向结构:
https://mywebsite.com/directory - >http://mywebsite.com - >https://mywebsite.com (注意HTTPS vs HTTP)。

第二届重定向是由于规则集来处理基于HTTP> HTTPS重定向:

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

RewriteCond %{REQUEST_URI} !\.(jpg|png|gif|bmp)$ [nc] 
RewriteCond %{HTTP:X-Forwarded-Proto} =http 
RewriteRule ^(.*)$ https://%{SERVER_NAME}/$1 [R=301,L] 

但我想,以避免双重一步。如何将HTTPS设置为htaccess的默认值?

+0

有作为“默认htaccess的”没有这样的事。向我们展示您的完整规则集。 – CBroe

+0

@CBroe添加了HTTPS重定向。这是你的意思吗? – Noam

+0

@CBroe当我在htaccess中指定重定向到“/”时,他应该怎么知道它是https还是http? – Noam

回答

3

如何将HTTPS设置为htaccess的默认值?

只需使用https:// URL重定向中:

RewriteRule ^directory/?$ https://%{HTTP_HOST}/ [R=301,L,NE,NC] 
+0

而'%{HTTP_HOST}'包含子域名,对不对? – Noam

+0

是'HTTP_HOST'变量表示当前请求URL中的域名。 – anubhava

+0

所以基本上,对于htaccess的默认总是http,如果我想不同,我需要指定在每个url重定向规则? – Noam