2017-05-18 75 views
0

我有這樣的代碼在我.htaccess文件,該文件不作爲的評論說:重定向所有領域使用HTTPS

Options +FollowSymLinks -MultiViews 
RewriteEngine On 
RewriteBase/
Options -Indexes 

# redirect all traffic to correct domain 
RewriteCond %{HTTP_HOST} ^itl\.|^(www\.)?(integratelecom|integra|integratelecommunications)\b [NC] 
RewriteRule^https://www.example.net%{REQUEST_URI} [L,R=301,NE] 

# redirect admin./ssladmin. sub domain to the correct folder 
RewriteCond %{HTTP_HOST} (admin|ssladmin)\.itl\.uk\.net$ [NC] 
RewriteRule !^admin/system/ admin/system%{REQUEST_URI} [L,NC] 

# redirect subdomain.X to subdomain.example.net 
RewriteCond %{HTTP_HOST} ^(?!www\.)([^.]+)\.(?!itl\.)[^.]+\. [NC] 
RewriteRule^https://%1.example.net%{REQUEST_URI} [L,NE,R=302] 

# map subdomains to correct folder 
RewriteCond %{HTTP_HOST} ^(?!www\.)([^.]+)\.example\.net$ [NC] 
RewriteRule !^subdomains/ subdomains/%1%{REQUEST_URI} [L,NC] 

RewriteRule ^(subdomains/|admin/|index\.php$) - [L,NC] 

# stop external linking to website but allow listed domains below 
RewriteCond %{HTTP_REFERER} !^$ 
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?google.co.uk [NC] 
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?google.com [NC] 
RewriteCond %{HTTP_REFERER} !^http(s)?://(.*\.)?itl.uk.net [NC] 
#RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.|admin\.|ssladmin\.)?example.net [NC] 
RewriteRule \.(jpg|jpeg|png|gif)$ – [NC,F,L] 


####################################### 
############## MAIN SITE ############## 
####################################### 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

RewriteRule ^(blog)/(post|tags|category)/([\w-]+)/?$ index.php?id=$1&type=$2&unique=$3 [QSA,NC,L] 
RewriteRule ^(blog)/(archives)/([0-9]{4})/([0-9]{2})?$ index.php?id=$1&type=$2&year=$3&month=$4 [QSA,NC,L] 

RewriteRule ^(support/knowledgebase)/(article|category|search)/([\w-]+)?$ index.php?id=$1&type=$2&unique=$3 [QSA,NC,L] 

RewriteRule ^([a-zA-Z0-9-/_]+)/?$ index.php?id=$1 [L,QSA] 

上述所有工作正常,但我需要強制每個域和子域使用HTTPS,我已經嘗試添加在:

RewriteCond %{HTTPS} off %HTTP_HOST [NC] 
RewriteRule^https://%1.domain.net%{REQUEST_URI} [L,NE,R=302] 

但是,保持返回一個內部服務器錯誤

我也試過這兩條線,但增加了%25到URL的末尾

#RewriteCond %{HTTPS} off 
#RewriteRule (.*) https://%{SERVER_NAME}/%$1 [R,L] 

回答

1

迫使你可以使用HTTPs

RewriteCond %{HTTPS} !=on 
RewriteRule ^.*$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L] 

它基本上說,如果HTTPS不等於ON,那麼這將迫使該網站使用SSL來顯示。

確保在測試之前清除緩存。

+0

我應該把它放在我的htaccess文件中?這將適用於子域和普通域嗎? – charlie

+0

把它放在頂部。它應該工作得很好,這取決於你的結構。但是,如果不是,您可能需要將其放入子域的單獨.htaccess文件中。 – Lag

+0

非常感謝你 - 完美地工作! – charlie

相關問題