2011-07-27 63 views
1

我有一個重寫規則:htaccess - 如何將htaccess文件應用於子目錄?

RewriteRule ^Catalog/Custom_Pages/([^\.]+)\.html$ http://www.domain.com/New/Catalog/Custom_Pages/Custom_Pages_Main.php?cp=$1 [R] 

目錄結構domain.com/New/Catalog/

如果我省略了「目錄」在重寫規則,則URL不被改寫的前面。 htaccess文件位於「新建」目錄中。那麼,'New'的htaccess僅適用於其子目錄,還是應用於所有子目錄,以便'Catalog'可以省略?這可能是服務器設置?

+0

你應該舉例說明你想要的網址和你不想要的網址 – Enki

回答

2

如果.htaccess文件是在/New/文件夾,然後將應用此文件夾和子文件夾,但在RewriteRule指令的所有URL路徑將是相對/New/文件夾。

如果你想省略Catalog/部分來自重寫規則的圖案,然後再嘗試這個規則來代替:

RewriteRule Custom_Pages/([^\.]+)\.html$ http://www.domain.com/New/Catalog/Custom_Pages/Custom_Pages_Main.php?cp=$1 [R] 

您當前的格局清清楚楚地寫着「網址應以目錄開始」(檢查正則表達式手動什麼^手段)。

以上規則可應用於Catalog/Custom_Pages/something.html以及Pink-Kitten/Custom_Pages/something.html

+0

好的,所以卡洛正在造成它。因此,carot之前的所有內容都是htaccess所在的基礎目錄。這就說得通了。謝謝。 –

0

模式將被匹配到頁面的URL,從目錄,所以爲例:

http://www.domain.com/New/Catalog/Custom_Pages/test.html 

從目錄/新的路徑頁面:

Catalog/Custom_Pages/test.html 

然後如果正則表達式模式匹配Catalog/Custom_Pages/test.html,則該規則將適用,否則將不適用。

ps:如果在CatalogCustom_Pages中有一個.htaccess,它們的規則將首先被測試。