2014-10-01 110 views
0

我對Apache的設置不太熟悉。我需要使網站加載子目錄內容,除了一頁。如何設置Apache mod_rewrite重定向規則?

目前有一個網站,需要從http://www.domain.com/subfolder撥打所有電話到http://www.domain.com & http://domain.com負載的內容(不過貌似http://www.domain.com

只有除http://www.domain.com/checkout頁面,這個頁面應該重定向到https://www.domain.com/checkout爲安全的結算

所示

當前的mod_rewrite如下:

RewriteEngine on 

RewriteRule ^$ domain/index.php [L] 
RewriteCond %{DOCUMENT_ROOT}/domain%{REQUEST_URI} -f 
RewriteRule .* domain/$0 [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule .* domain/index.php?q=$0 [QSA] 

RewriteCond %{HTTP_REFERER} !^$ 
RewriteCond %{HTTP_REFERER} !^http://domain.com.au/.*$  [NC] 
RewriteCond %{HTTP_REFERER} !^http://domain.com.au$  [NC] 
RewriteCond %{HTTP_REFERER} !^http://www.domain.com.au/.*$  [NC] 
RewriteCond %{HTTP_REFERER} !^http://www.domain.com.au$  [NC] 
RewriteRule .*\.(jpg|jpeg|gif|png|bmp)$ http://www.domain.com.au [R,NC] 
+0

請張貼您當前的重寫規則。 – 2014-10-01 11:48:23

+0

請不要在此處添加「緊急」和「我在線等待」的問題。志願者傾向於在閒暇時回答問題:「),無論如何,如果這些問題是爲將來的讀者撰寫的話,這裏的問題是最好的 - 對於這些問題,OP的緊迫性並不是有用的信息。 – halfer 2014-10-01 11:56:26

回答

1

打開該文件命名爲您的Web服務器的根.htaccess,並添加以下代碼行:

RewriteEngine On 

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

RewriteCond %{SERVER_PORT} 80 
RewriteRule ^checkout/(.*)$ https://www.yourdomain.com/checkout/$1 [R=301,L] 

RewriteCond %{HTTP_HOST} ^www.yourdomain.com [NC] 
RewriteCond %{REQUEST_URI} !^/subfolder/ 
RewriteCond %{REQUEST_URI} !^/checkout/ 
RewriteRule ^(.*)$ /subfolder/$1 [NE,L,QSA] 

改寫爲您完整的.htaccess文件(檢查是否工作正常,那麼我會刪除以前的代碼):

RewriteRule ^$ subfolder/index.php [QSA,L] 

RewriteCond %{HTTP_REFERER} !^$ 
RewriteCond %{HTTP_REFERER} !^http://(www\.)?yourdomain.com [NC] 
RewriteRule .*\.(jpg|jpeg|gif|png|bmp)$ http://www.yourdomain.com [NC] 

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

RewriteCond %{SERVER_PORT} 80 
RewriteRule ^checkout/(.*)$ https://www.yourdomain.com/checkout/$1 [R=301,L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^subfolder/(.*) /subfolder/index.php?q=$1 [L,QSA] 

RewriteCond %{HTTP_HOST} ^www.yourdomain.com [NC] 
RewriteCond %{REQUEST_URI} !^/subfolder/ 
RewriteCond %{REQUEST_URI} !^/checkout/ 
RewriteRule ^(.*)$ /subfolder/$1 [NE,L,QSA] 
+0

感謝您的促銷回復戴夫!但它似乎不工作,我試圖在瀏覽器中鍵入www.domain.com,得到「內部服務器錯誤」,有什麼想法? – hunteryxx 2014-10-01 12:06:17

+0

有一個錯字(太多1個空格),糾正它!現在工作? – DaveG 2014-10-01 12:13:02

+0

再次感謝您的幫助戴夫,再次嘗試,主頁正在工作,但所有其他頁面加載了「未找到」的錯誤。 – hunteryxx 2014-10-01 12:18:48