在配置Restler时,它建议创建以下重写规则:
DirectoryIndex index.php
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^$ index.php [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>
我已将其放入 REST 目录根目录中的 .htaccess 文件中,但在触发此规则时出现 500 服务器错误。apache错误日志的错误消息是:
[Wed Oct 10 10:39:30 2012] [alert] [client 127.0.0.1] /public/api/.htaccess: RewriteCond: unknown flag 'QSA'
[Wed Oct 10 10:39:30 2012] [error] [client 127.0.0.1] File does not exist: /public/favicon.ico
我认为可以忽略缺少 favicon.ico 文件,但我担心“未知标志 'QSA'”错误。我对重写规则知之甚少,因此将不胜感激。
对于那些熟悉 Restler 的人,我使用的是 3.0.0rc2(如果重要的话)。另外值得指出的是,使用对 index.php 的显式调用非常有效,因为我得到了 404 JSON 错误响应(一个积极的改进),但如上所述,如果我依赖重写规则,那么我只会得到 500 服务器错误:
http://localhost/api/index.php/say/hi - WORKS (gives JSON 404 error)
http://locahost/api/say/hi - 500 SERVER ERROR