2011-07-27 30 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,它们的规则将首先被测试。