2014-10-22 54 views
0

我試圖修改我的HT訪問文件重定向通過HTTPS網站(而不是舊的網站)htaccess的重定向到https:// www和現場

訪問該網站的根頁面下面的第一段代碼是隻允許通過根文件頁訪問的訪問代碼部分,這部分工作是完美的。

但是,第二部分是假設將所有內容重定向到HTTPS站點並阻止訪問http站點的部分。這不起作用,它仍然可以通過http訪問站點。

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} -s [OR] 
RewriteCond %{REQUEST_FILENAME} -l [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule ^.*$ - [NC,L] 
RewriteCond %{REQUEST_URI}::$1 ^(/.+)(.+)::\2$ 
RewriteRule ^(.*) - [E=BASE:%1] 
RewriteRule ^(.*)$ %{ENV:BASE}index.php [NC,L] 


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

#Now, rewrite to HTTPS: 
RewriteCond %{HTTPS} off 
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 

我會真正apprciate建議如何修改代碼。

回答

0

嘗試和重寫規則刪除L。一旦達到規則,它將停止處理,所以它會一直停止。

更改此

RewriteRule ^(.*)$ %{ENV:BASE}index.php [NC,L] 

RewriteRule ^(.*)$ %{ENV:BASE}index.php [NC] 

請參閱如何爲你工作。

編輯:

如果你只想將所有通信業務和非HTTPS到HTTPS和索引頁面下面的代碼做同樣的事情。注意我使用了域名。將yoursite.com替換爲您的真實網站。看看它是如何工作的。

RewriteEngine On 
RewriteCond %{HTTP_HOST} !^www\. [NC,OR] 
RewriteCond %{HTTPS} !^on$ 
RewriteRule ^(.*)$ https://www.yoursite.com/ [R=301,L] 

RewriteCond %{REQUEST_URI} !/$ 
RewriteCond %{REQUEST_URI} !/index.php 
RewriteRule ^(.*)$/[NC,R=301,L] 
+0

哎巴拿馬。非常感謝你的回答。我現在會嘗試。但是如果我刪除了[L],它仍然只允許通過根主頁訪問網站。我的意思是,我不希望用戶能夠訪問該網站接受通過根索引pag – 2014-10-22 08:42:19

+0

嘿巴拿馬Jac。我嘗試過這個。它不會阻止通過http進入索引頁面。但是,一旦我嘗試導航到另一個頁面,它確實將其發送到HTTPS。我如何防止進入主頁http – 2014-10-22 09:06:12

+0

你到底想要完成什麼?如果您只是想將所有頁面重定向到根目錄或index.php並使用https,那並不困難。 – 2014-10-22 09:34:16