【问题标题】:Slim Framework 404 instead of a correct answerSlim Framework 404 而不是正确答案
【发布时间】:2016-01-25 11:22:33
【问题描述】:

我想使用 Slim 框架创建一个 RESTful 服务,并且在我的本地主机 (xampp) 上一切正常。

我有几个路径,如'/''/articles''/articles/id/{id}' 等。

但是,当我将代码上传到服务器时,只有 '/' ( http://mydomain.de/api ) 会带来正确的答案,而其他路径只会带来 404 错误(服务器之一,而不是 Slim 抛出的那个)。我在/TEST/api 中的.htaccess 是:

RewriteEngine On
#RewriteBase /TEST/api
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [QSA,L]

第二行未注释我得到相同的结果。有什么我想念的吗?如何确定我的 .htaccess-settings 是否被使用?

【问题讨论】:

  • 我会首先检查 Apache conf 文件中的 AllowOverride All。错误让我想到了这一点。
  • 另外我使用以下代码:RewriteRule ^.*$ index.php [NC,L]
  • 我无法直接访问 conf 文件。只有一个网络后端,我可以更改一些设置。
  • 这个问题令人困惑。你的 api 的 url 是什么? mydomain.de/api 还是 mydomain.de/TEST/api?无论如何,问题是您的重写规则不起作用。最有可能是关于 AllowOverride All 的 smozgurs 建议。
  • 那么正确的base是:RewriteBase /api/

标签: php .htaccess http-status-code-404 slim restful-architecture


【解决方案1】:

试试这个。它对我有用

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]

【讨论】:

  • 这导致相同的结果。
  • 你的服务器上启用了 mod_rewrite 吗?
  • 我没有直接访问 httpd.conf 的权限,但支持人员说“理论上将 SymLinksIfOwnerMatch 选项设置为“开”也会启用 mod_rewrite”。但他说,我可以通过 php.ini 做一些额外的配置。你知道怎么做吗?
  • Mod_rewrite 与 php 设置无关。按照 Mika 的建议更改底座。它应该会有所帮助。
猜你喜欢
  • 1970-01-01
  • 2022-11-13
  • 1970-01-01
  • 1970-01-01
  • 2021-12-30
  • 2016-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多