我有一个重写规则:
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'可以省略?这可能是服务器设置吗?
答案 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:如果Catalog
或Custom_Pages
中有.htaccess,则会先测试他们的规则。