当我去
http://localhost/api/auth/login
我得到了我的期望..一些数据让我登录。
然而,当我去
http://myurl.com/api/auth/login
我得到了
{
"error": {
"code": 404,
"message": "Not Found"
}
}
目前我们有2个人正在从事这个项目,当我们从本地机器运行时,我们俩都没有问题。我们将应用程序放到托管服务器上,以便我们可以在自己的计算机之外开始测试。
代码是完全相同的,我知道这是因为我们使用了一个git存储库,服务器也在这个存储库中。
我的机器是mac,我的伙伴是一台Windows机器,我们的主机是一个linux机箱。这应该不重要,因为所有这些都应该与mod_rewrite一起使用,这是对Restler 3的要求。
我能想到的唯一其他细节是服务器由HostMonster托管,运行PHP 5.4.7
任何帮助都会非常感激。您需要更多信息吗?
===编辑: 这是我的.htaccess文件。此外,服务器运行CGI / FastCGI而不是mod_php
Options -MultiViews
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>
<IfModule mod_php5.c>
php_flag display_errors Off
</IfModule>
我只是用谷歌搜索'fastcgi mod_rewrite'而这些链接都没有帮助:P
答案 0 :(得分:1)
当你遇到这样的问题时,首先尝试不用url重写
而不是
http://myurl.com/api/auth/login
试
http://myurl.com/api/index.php/auth/login
如果有效,您将知道问题是网址重写
由于您使用的是CGI / FastCGI,请确保已设置
cgi.fix_pathinfo=0
在你的php.ini中,它将确保路径信息正确传递给Restler,以便restler可以找到路径
如果它不能与网址中的index.php一起使用,您可以尝试生成并验证routes.php
,如下所述
每次我们在调试模式下运行它时,Restler会查看所有api方法及其doc注释以相应地生成路由。当我们在生产模式下运行它时,它会捕获routes.php中的信息并使用它而不是每次都生成路由,从而提高效率。
您可以通过在生产模式下初始化restler来检查生成的路由,并在每次调用时刷新
$r = new Restler(true, true);
然后检查生成的routes.php
如果您的routes.php
不包含任何路线,则会显示如下
<?php $o = array();
// ** THIS IS AN AUTO GENERATED FILE. DO NOT EDIT MANUALLY **
return $o;
如果是这种情况,则表示自动加载器无法加载api类的方法,您可以通过手动包含API类来确认它
如果它开始工作,请使用github问题提交一个错误,说明自动加载器无法为您的服务器配置失败,并为我们提供更多detils,以便我们可以重现并修复它。
如果它仍然不起作用,请使用提及您的服务器配置的github问题提交错误,并向我们提供任何有用的详细信息,以便我们可以重现并修复它。
向您致谢,我们还将根据上述内容撰写故障排除指南,以帮助其他人:)