当我已经在webroot上有一个重写规则来删除'index.php'时,关于子目录上的mod重写的快速问题
我的.htaccess看起来像这样:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
我有一个API目录(/webroot/api/index.php),我希望有一个RESTful API(Restler)来为应用程序提供请求 - 所以我的问题是......
要发出RESTful请求,我需要使用以下URL格式:
/webroot/api/index.php/user/get/ (to get all the users)
我希望实现的是形式:
/webroot/api/user/get/ (return a list of users)
仍保留主网站的基本重写规则
/webroot/members/ (display a list of users in the main applications)
非常感谢,
Justen
答案 0 :(得分:0)
你的基础重写看起来很奇怪。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
这表示如果我们匹配index.php
,我们就完成了(并且没有重写)。那是你要的吗?如果请求完全针对没有尾随材料的/index.php
,那么它将保持不变。
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
要删除 index.php
,您需要以下内容:
RewriteRule ^index.php/(.*) $1 [L]
E.g。 index.php/foo
转到foo
(相对重写:然后RewriteBase
加上/foo
会变成{{1}}网址以反馈到请求管道中。)