在URL中省略index.php时,总是在Slim Framework中出现404错误

时间:2012-09-09 22:20:00

标签: php apache mod-rewrite slim

我按照here的说明创建了一个测试hello world Slim应用程序。

当我拨打此电话时,我收到404错误:

http://my_server/my_app/hello/John

另一方面,当我拨打这个电话时,它会很有效,因为我收到了“Hello John”消息:

http://my_server/my_app/index.php/hello/John

但是,当然,我不想在我的网址中使用index.php ......有什么不对的?

=======编辑=======

我忘了像这样创建.htaccess文件(遵循Slim Framework文档,与index.php在同一目录中):

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

现在我收到了这个错误:

/physical_path_to_my_files/index.php was not found on this server

4 个答案:

答案 0 :(得分:16)

如果您的htaccess文件位于/my_app目录中,请将规则更改为:

RewriteEngine On

RewriteBase /my_app/

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

如果它在您的文档根目录中,则需要附加路径:

RewriteRule ^ /my_app/index.php [QSA,L]

答案 1 :(得分:5)

还可以将.htaccess更改为以下内容:(我遇到了类似的问题,这解决了我的问题):

htaccess的:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^(.*)$ %{ENV:BASE}index.php [QSA,L]

答案 2 :(得分:1)

如果Jon Lin解决方案无法正常工作,则表示您的.htaccess文件无效。 你可以验证我添加了像

这样的垃圾线
RewriteEngine On
RewriteBase /loop/v1/

This is garbage line

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]
如果.htaccess工作正常,这将产生503错误,否则你不会得到任何错误。

如果您没有收到任何错误,请在apache conf文件或Httpd.conf中更改Allow none to Allow all in section部分

答案 3 :(得分:-1)

此资源解释了我们需要配置以便在Ubuntu上使用slim(它帮助我解决了我的404问题):

总结一下,要配置两件事:

  1. 激活mod_rewrite a2enmod rewrite
  2. 修改Apache 配置文件(将AllowOverride None更改为AllowOverride All 对于文档根)
  3. 不要忘记在更改后重新启动apache2:service apache2 restart

    How To Install and Configure Slim Framework on Ubuntu 14.04