2017-05-27 29 views
1

基本上,我在我的主要網站(http://www.jamesandersonjr.com)的「public_html」目錄(Apache服務器)的根目錄中有一些子目錄。主網站文件直接位於'public_html'根目錄中,而其他網站(具有自己的獨立域名)則位於下的子文件夾/子目錄的根目錄下。如何防止.htaccess將規則從級聯重定向到位於'public_html'根目錄的子目錄中的網站?

我遇到的問題是我的.htaccess文件(在'public_html'的根目錄中)的一些規則是級聯下來,影響其他網站,在上述子目錄(因此,他們自己單獨網站)。下面是規則:

RedirectMatch 301 "^\/facebook\/?$" "/facebook.php" 
RedirectMatch 301 "^\/twitter\/?$" "/twitter.php" 
RedirectMatch 301 "^\/youtube\/?$" "/youtube.php" 
RedirectMatch 301 "^\/bug_?report\/?$" "/bug_report.php" 

RedirectMatch 301 "^\/bugreport\.(php|html?)(\?)?$" "/bug_report.php" 

這些規則.htaccess文件中,在我的主要網站:http://www.jamesandersonjr.com 但在第一次瞞着我,他們也影響到另一個網站,是在一個子目錄,根目錄。

如何防止這種「級聯」的發生,或者如何重寫規則以僅包含與主網站相關的路徑(在上面的代碼中):http://www.jamesandersonjr.com,而不是子文件夾/子目錄呢?

注意:在完整代碼重寫的情況下,我需要能夠保留url參數/變量(特別是'GET')(尤其是在上面的代碼中的最後一條規則中)。例如:

http://www.jamesandersonjr.com/bugreport.php?page_domain=http://www.example.com

自動變爲:提前

http://www.jamesandersonjr.com/bug_report.php?page_domain=http://www.example.com

感謝你的幫助。

回答

2

你可以試試這個包裹您的規則:

<If "%{HTTP_HOST} == 'www.jamesandersonjr.com'"> 
    ... 
</If> 

更新

要包括子域和根域沒有任何的子域(只是jamesandersonjr.com):

<If "%{HTTP_HOST} =~ /(?:^|\.)jamesandersonjr\.com$/"> 
    ... 
</If> 

要包含子域但不包含根域:

<If "%{HTTP_HOST} =~ /\.jamesandersonjr\.com$/"> 
    ... 
</If> 

這是子域到任何級別。如果您只希望允許單個級別的子域名,則需要更新它。

供參考,documentation is here

+0

嘿SuperDuperApps,請逃避那些時期,所以我可以批准你的答案。謝謝! –

+1

它不需要轉義期。這是一個字符串比較,而不是正則表達式。很高興它對你有效。 – SuperDuperApps

+0

現在,我將如何*包含'jamesandersonjr.com'的子域,而仍然*排除其他網站在根目錄的子目錄中? –

相關問題