2017-09-10 176 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