2015-09-04 90 views
-1

我知道這聽起來像重複,但我嘗試了儘可能多的方法,我可以找到,我仍然沒有得到這個工作。所以請不要自動標記爲重複。htaccess重定向除了三頁以外的所有頁面https:

我想的http://www.domian.com所有頁面重定向到https://www.domain.com用三頁除外:/產品/產品1,/產品/產品2,/產品/產品3

我也希望這些網頁總是直接到http因爲如果https頁面通過相對鏈接鏈接到它,它自然會有https。

此外,這是一個表達式引擎網站,我從URI中刪除index.php。

當前的Htaccess,導致這三個頁面仍然是https,即使我去這些頁面的Http。

### secure .htaccess file 
<Files .htaccess> 
order allow,deny 
deny from all 
</Files> 

### EE 404 page for missing pages 
ErrorDocument 404 /index.php/site/404 

###Block Access to directories with no index file 
Options -Indexes 

### Simple 404 for missing files 
<FilesMatch "(\.jpe?g|gif|png|bmp|css|js|flv)$"> 
    ErrorDocument 404 "File Not Found" 
</FilesMatch> 

### Although highly unlikely, your host may have +FollowSymLinks enabled at the root level, yet disallow its addition in .htaccess; in which case, adding +FollowSymLinks will break your setup (probably a 500 error), so just remove it, and your rules should work fine. 
###Options +FollowSymlinks 
RewriteEngine On 
RewriteBase/

###Removes index.php from ExpressionEngine URLs 
RewriteCond %{THE_REQUEST} ^GET 
RewriteCond %{THE_REQUEST} ^[^/]*/index\.php [NC] 
RewriteRule ^index\.php(.+) $1 [R=301,L] 

### Add the www 
RewriteCond %{HTTP_HOST} ^domain\.com 
RewriteRule ^(.*)$ http://www.domain.com/$1 [R=permanent,L] 


###each option I try I replace in this block as a reference 
RewriteCond %{SERVER_PORT} 80 
RewriteCond %{HTTPS} !on 
RewriteCond %{REQUEST_URI} !^/products/product3 
RewriteCond %{REQUEST_URI} !^/products/product1 
RewriteCond %{REQUEST_URI} !^/products/product2 
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R=301,L] 

###### 


RewriteCond $1 !\.(gif|jpe?g|png)$ [NC] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?/$1 [L] 
### 

而且已經試過這導致與上面相同:

RewriteCond %{HTTPS} !on 
RewriteCond %{HTTP_HOST} !^(domain\.com/products/product1|domain\.com/products/product2|domain\.com/products/product2) [NC] 
RewriteRule ^(.*)$ https://www.domain.com/$1 [R,L] 

RewriteCond %{HTTPS} on 
RewriteCond %{HTTP_HOST} ^(domain\.com/products/product1|domain\.com/products/product2|domain\.com/products/product2) [NC] 
RewriteRule ^(.*)$ http://www.domain.com/$1 [R,L] 

試圖單憑這一點只是爲了看看就能夠瀏覽到http://www.domain.com/products/product1和至少沒有它改寫,但它仍然重寫爲https

RewriteCond %{HTTPS} !on 
RewriteCond %{REQUEST_URI} !/products/product1 [NC,OR] 
RewriteCond %{REQUEST_URI} !/products/product2 [NC,OR] 
RewriteCond %{REQUEST_URI} !/products/product3 [NC,OR] 
RewriteRule ^(.*)$ https://www.domain.com/$1 [R,L] 

嘗試了這一點,它仍然將這些頁面寫入https。另外,如果我嘗試去到HTTP,它改寫爲https並不會刪除的index.php

RewriteCond %{SERVER_PORT} 80 
RewriteCond %{REQUEST_URI} !^/products/product3 
RewriteCond %{REQUEST_URI} !^/products/product1 
RewriteCond %{REQUEST_URI} !^/products/product2 
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R=301,L] 

RewriteCond %{SERVER_PORT} 80 
RewriteRule ^/products/product3 http://www.domain.com/products/product3 [R=301,QSA,L,NE] 
RewriteRule ^/products/product1 http://www.domain.com/products/product1 [R=301,QSA,L,NE] 
RewriteRule ^/products/product2 http://www.domain.com/products/product2 [R=301,QSA,L,NE] 

我已經試過誠實約10 -15版本的這高於一切,仍然不能得到它。包括添加index.php?在request_URI被刪除之前將其視爲request_URI的一部分。我最終會將頁面重寫爲https或重定向循環土地。

我錯過了一些簡單的東西,是錯誤的順序?我只是處於虧損狀態。 感謝您的任何幫助。

UPDATE: 下面是我用得到它的工作:

RewriteCond %{HTTPS} on  
RewriteCond %{THE_REQUEST} (\s/products/product1|\s/products/product2|\s/products/product3) [NC]  
RewriteRule^http://%{HTTP_HOST}%{REQUEST_URI} [R,L]  


RewriteCond %{HTTPS} off  
RewriteCond %{THE_REQUEST} !\s/products/product1 [NC]  
RewriteCond %{THE_REQUEST} !\s/products/product2 [NC]  
RewriteCond %{THE_REQUEST} !\s/products/product3 [NC] 
RewriteRule^https://%{HTTP_HOST}%{REQUEST_URI} [R,L] 
+0

您的網站託管在AWS或使用cloudflare或其他負載平衡系統? –

+0

沒有。只是一個標準的專用服務器與小橙橙 –

回答

2

下面是我們如何使用,這是在iframe中,不會對SSL工作的攝像頭達到了這個在網站上。這也是一個ExpressionEngine網站。

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/

#force www instead of non-www 
RewriteCond %{HTTP_HOST} ^domain.co.uk 
RewriteRule ^(.*)$ http://www.domain.co.uk/$1 [R=301,L] 

# HTTP/HTTPS handling 
# Force HTTP for webcam page only 
RewriteCond %{HTTPS} on 
RewriteCond %{THE_REQUEST} \s/webcam-page [NC] 
RewriteRule^http://%{HTTP_HOST}%{REQUEST_URI} [R,L] 

# Force HTTPS for all pages except webcam 
RewriteCond %{HTTPS} off 
RewriteCond %{THE_REQUEST} !\s/webcam-page [NC] 
RewriteRule^https://%{HTTP_HOST}%{REQUEST_URI} [R,L] 

# Removes index.php from ExpressionEngine URLs 
RewriteCond $1 !\.(gif|jpe?g|png)$ [NC] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /index.php?/$1 [L] 
</IfModule> 
+0

謝謝。不得不修改多個網址。我用最後一個塊更新了我的問題 –

相關問題