2016-02-19 95 views
0

我使用mod_rewrite允許「友好的URL」來取代搜索參數,這工作正常。 但是我現在需要的所有流量重定向到https://,但只允許某些頁面留在http:// (我需要做,所以我的推薦是由我的網站流量發送到收集)多個htaccess的http重定向到https但除了頁面

多年來我已經添加到.htaccess文件,大多數工作正常,但我沒有完全理解它,所以它可能會變得凌亂:-(

我有以下(我已經刪除了任何我不認爲是相關)

<IfModule mod_rewrite.c> 
    Options +FollowSymlinks 
    RewriteEngine On 
</IfModule> 

<IfModule mod_rewrite.c> 
    RewriteCond %{SCRIPT_FILENAME} -d [OR] 
    RewriteCond %{SCRIPT_FILENAME} -f 
    RewriteRule "(^|/)\." - [F] 
</IfModule> 

<IfModule mod_rewrite.c> 

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

RewriteRule ^profile/([A-Za-z0-9'/-]+)-([0-9]+)$ profile.php?id=$2 [NC,L,QSA] 
# NOTE: this allows for profile.php?id=123 to be replaced with /profile/name-123 

# redirects any http:// traffic to https:// 
RewriteCond %{HTTPS} !on 
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 

</IfModule> 

上述工程行,但全部重定向頁面到https

我已嘗試添加/更改HTTPS重定向部分下面,讓urlout.php不被重定向,但是這只是循環,我也得到一個瀏覽器警告的頁面重定向過多:-(

# redirects any http:// traffic to https:// 
RewriteCond %{HTTPS} !on 
RewriteCond ${REQUEST_URI} !^/urlout\.php 
#RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 
RewriteRule^https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 

我已經嘗試了一些其他的東西太多,但他們要麼不重定向,一切都將HTTPS,或者我得到循環錯誤或內部500錯誤...

基本上我希望所有的頁面訪問https,但不是urlout.php

對上述任何代碼的任何意見,我會很多appr eciated!

回答

0

如果你想重定向一些spacific頁到https,forexample,要重定向:

而且

到 - https://www.example.com/page2.html

你可以嘗試以下操作:如果你想從http到https整個網站重定向

RewriteEngine on 

RewriteCond %{HTTPS} off 
RewriteRule ^(page|page2)\.html$ https://www.example.com/$1.html [L,R] 

,您可以使用如下:

RewriteEngine on 



RewriteCond %{HTTPS} off 
RewriteRule ^(.*)$ https://www.example.com/$1 [NC,L,R] 

RewriteCond%{HTTPS} off對於避免重定向循環很重要,因爲它會跳過https請求的規則。

+1

我認爲這個問題實際上並沒有完成OP所要求的內容,即從HTTPS重定向中明確選擇特定的頁面,而不是反過來。 –

+0

謝謝,但這是我想要的反例。我嘗試從你說的話交換事情,但是這給內部服務器錯誤(500)。我想重定向整個網站,但不是page.php或page1.php – Ford

1

回答我的問題:

我成功地做到這一點,是我的愚蠢的錯誤的首要條件後,不添加[NC] ...

然而,對於其他人,下面的代碼將全部重定向到https://開頭從http:// 1頁(urlout.php在我的情況),除

# redirects any http:// traffic to https:// with exception of urlout.php 
RewriteCond %{HTTPS} off [NC] 
RewriteCond %{REQUEST_URI} !^/urlout\.php [NC] 
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 

我需要做的這個,所以我發送流量的網站可以看到我的域名爲「HTTP引用者」。

然而,我發現了一個簡單的方法來從https通過引薦到http(雖然針對特定瀏覽器!)添加到HTML頭:

<meta name="referrer" content="origin"> 

我對這個裁判是(其中包括):moz.com's Meta Referrer Tag Blog Post

相關問題