2010-03-05 53 views
0

的.htaccess的mod_rewrite我最近发现了一篇文章网上说告诉我这一点:嵌套的文件夹结构

RewriteRule ^mock-up/([^/]+)/([^/]+) /mock-up/index.php?page=$1&section=$2 [NC] 

是推动我疯了,现在唯一的事情是,如果我希望能有第二个目录或不。像:

RewriteRule ^mock-up/([^/]+)/([^/]+) /mock-up/index.php?page=$1&section=$2 [NC] 
RewriteRule ^mock-up/([^/]+) /mock-up/index.php?page=$1 [NC] 

但是,这是打破了Apache ...所以怎么办?请帮忙,我需要为我的客户搜索,我宁愿不必为此制作单个文件。

回答

1

的问题是,mock-up/index.php也被mock-up/([^/]+)匹配。所以,你需要排除的目标,无论是直接:

RewriteRule ^mock-up/index\.php$ - [L] 

或间接:

RewriteCond %{REQUEST_FILENAME} -f 
RewriteRule^- [L] 

那么试试这个:

RewriteRule ^mock-up/index\.php$ - [L] 
RewriteRule ^mock-up/([^/]+)/([^/]+)$ /mock-up/index.php?page=$1&section=$2 [NC] 
RewriteRule ^mock-up/([^/]+)$ /mock-up/index.php?page=$1 [NC] 
+0

感谢你的快速回复,我很少会接触。 htaccess除非我需要,但我注意到wordpress实现了这个聪明的策略。 的作品,但在这种“实体模型”目录中的其他文件不再显示出来,所以不必有什么建议? 我感谢您的帮助! – rodenbushdesign 2010-03-05 21:09:23

+0

间接方法纠正了这个问题。谢谢!!! – rodenbushdesign 2010-03-05 21:19:29

+0

@Lucas:如果我的回答回答了您的问题,请将其标记为已接受的答案。 – Gumbo 2010-03-08 17:06:04