htaccess - 如何将htaccess文件应用于子目录?

时间:2011-07-27 17:04:19

标签: .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 /

如果我在RewriteRule的前面省略'Catalog',则不会重写URL。 htaccess文件位于“新建”目录中。那么'New'的htaccess只适用于它的子目录,还是应用于所有子目录,以便'Catalog'可以省略?这可能是服务器设置吗?

2 个答案:

答案 0 :(得分:3)

如果.htaccess文件位于/New/文件夹中,则它将适用于此文件夹和所有子文件夹,但RewriteRule指令中的所有网址路径都将相对到{{ 1}}文件夹。

如果您想从RewriteRule模式中省略/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

答案 1 :(得分: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,则会先测试他们的规则。