我正在使用Restler在Apache服务器上构建REST API,并且我有一些url重写问题 这是我的目录:
/ API:
/供应商
...
.htaccess(第1级)
/ public:
/例子
/测试
/ src目录
.htaccess(第二级)
/ explorer:
/ CSS
/图片
/ lib目录
的index.html
现在,这就是我想要的:
1)我想要一个看不见的“公共”目录。
例如, GET mydomain.com/api/data 之类的请求会直接将其选入 mydomain.com/api/public/data
2)我希望“public”目录的根目录为 explorer / index.html ,但是这个文件以相对的方式加载了大量资源,有时它不会加载。
所以基本上我想访问/api/public/explorer/index.html并加载所有资源,如果我只是尝试访问: mydomain.com/api
以下是我现在的情况:
Options +FollowSymLinks
AddDefaultCharset UTF-8
RewriteEngine On
RewriteBase /api/
RewriteCond %{REQUEST_URI} !^public/
RewriteRule ^(.*)$ /api/public/$1
对于第一级.htaccess,它看起来效果很好
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^/$ explorer/ [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>
<IfModule mod_php5.c>
php_flag display_errors On
</IfModule>
对于二级.htaccess
有任何建议吗?谢谢
答案 0 :(得分:1)
这条规则:
RewriteRule ^/$ explorer/ [QSA,L]
不会起作用,因为达到该规则的请求将删除前导斜杠:
RewriteRule ^$ explorer/ [QSA,L]
但我不确定那是你想要的,因为为了达到这条规则,你需要去:
http://mydomain.com/api/
如果这就是你想要的,那么你只需要删除那个前导斜杠。