我按照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
答案 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问题):
总结一下,要配置两件事:
a2enmod rewrite
AllowOverride None
更改为AllowOverride All
对于文档根)不要忘记在更改后重新启动apache2:service apache2 restart