设置
我的文件结构设置如下:
/root
|
/api
|
/Slim PHP framework
index.php
|
index.php
Slim目录中的index.php
包含从JSON
数据库中检索Mongo
数据所需的路由。 E.g。
$app->get('/users(/:id)', function($id = null) use ($app, $collection) {
/* Do mongo search and echo json_encoded data back */
});
我有一个.htaccess
文件包含:从根目录下的文件中删除.php
扩展名。
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php`
问题
我可以使用网址JSON
访问我的http://localhost:8888/root/api/index.php/users
数据。
但是,我想要做的是使用网址http://localhost:8888/root/api/users
答案 0 :(得分:3)
如果我理解正确,那该怎么办?
RewriteRule ^api/users/(.*)$ /root/api/index.php/users/$1 [L]
RewriteRule ^api/users$ /root/api/index.php/users [L]
应该允许此网址。
http://localhost:8888/api/users/1
它也允许这样做
http://localhost:8888/api/users
编辑:
这应该允许您在用户之后添加一个数字。还缩短了URL,因此您也不必在URL中包含root。
答案 1 :(得分:1)
假设您的.htacces位于网站根目录“/”
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
RewriteCond %{REQUEST_URI} !/index.php [NC]
RewriteRule ^(.*?/api)/(.*)$ $1/index.php/$2 [NC,L]
这将重定向
http://localhost/root/api/users/1 => http://localhost/root/api/index.php/users/1
http://localhost/root/api/data/20 => http://localhost/root/api/index.php/data/20
答案 2 :(得分:0)
需要注意的是,规则序列也很重要,因此如果您需要重写/重定向http://example.com/users AND http://example.com/users/到http://example.com/userinfo/,同时重写{{3到http://example.com/users/uname然后这个应该工作:RewriteEngine on
RewriteEngine on
RewriteRule ^users/$ /userinfo/ [L]
RewriteRule ^users/(.*)$ /scripts/script.php?id=$1 [L]
RewriteRule ^users$ /userinfo/ [L]
可能有一个更好的解决方案,少一行,但这个适合我。