2017-09-10 178 views
0

我正在构建一个基于MVC的CMS。htaccess rewriterule挑战

我试图将所有的网址如下:

  • site.com/admin/...>admin.php?url=...
  • site.com/member/...>member.php?url=...
  • site.com/...>index.php?url=...

前两个是没有问题的

Options -MultiViews 
RewriteEngine On 
RewriteBase /cms/public_html/ 

RewriteCond %{REQuEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 

RewriteRule ^admin/(.*)$ admin.php?url=$1 [QSA,L] 
RewriteRule ^member/(.*)$ member.php?url=$1 [QSA,L] 

但是,当我想添加第三个,这就是我卡住的地方。我试过

RewriteRule (.+)$ index.php?url=$1 [QSA,L] 

然而,这'禁用'前两条规则。
然后我尝试:

RewriteRule !^admin(.+)$ index.php?url=$1 [QSA,L] 

这适用于管理部分,也显示了指数,但不是在URL解析URL的余生吗?

我该如何得到这个工作?
我也应该可以添加更多的网站部分(如site.com/gallery/)。

回答

1

其他RewriteCond怎么样?

请注意,您需要为每个RewriteRule列出一组RewriteCond,因为它们只应用一次。

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^admin/(.*)$ admin.php?url=$1 [QSA,L] 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^member/(.*)$ member.php?url=$1 [QSA,L] 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_URI} !^/admin(/|$) 
RewriteCond %{REQUEST_URI} !^/member(/|$) 
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L] 

演示的最后一组在这里:http://htaccess.mwl.be?share=e7bf5c48-3332-56c1-a83b-d828b3c043a4

+0

谢谢,就像一个魅力......不知道你需要或者指定的RewriteCond ... – LinkinTED