最近我试图学习php框架,因为我想在我的项目中实现它们,实现路由和安全会话/表单处理,我厌倦了将wordpress用于客户端的工作,所以我发现了Slim,我制作了你可以在项目主页上找到的示例应用程序。
现在,出于各种原因,我知道很多客户端最终会选择共享托管解决方案,当它只是一个展示网站时,所以我对共享托管配置和.htaccess文件做了一些研究。我使用altervista进行测试,看它是否有效(它是一个免费托管服务,共享),唯一的问题是我遵循的每个教程,假设通过ftp连接时你可以看到doc root(public_html, htdocs等等)但仍然上传它,相反,在这种情况下,我只能看到公共文件夹的内部。
这让我有点困惑,但无论如何我试过,我上传了所有苗条文件(包括公共应用程序文件夹和所有必要的背景文件),制作了一个.htaccess,并上传了它,其内容如下:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^minimaleffort.altervista.org$ [NC,OR]
RewriteCond %{HTTP_HOST} ^www.minimaleffort.altervista.org$
RewriteCond %{REQUEST_URI} !public/
RewriteRule (.*) /public/$1 [L]
我访问了我网站的索引,并且瘦身框架的主屏幕显示为预期(有点编辑,因为我实现了bootstrap css)
一切正常,对吗?不,错,如果我输入路线(例如默认的应用路线)
/{name}
它会返回一个404错误页面,而它应该在屏幕上打印我放在URL中的任何名称,我错过了什么吗? 如果您想直接查看网站here's the url
答案 0 :(得分:1)
如果您查看official Slim 3 example application,其.htaccess
文件内容如下:
RewriteRule ^ index.php [QSA,L]
我绝不是mod_rewrite大师,但我认为你没有将查询字符串传递给索引文件。这就是首页的工作原理,而不是其他页面。
我认为您的.htaccess
文件应该如下所示:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^minimaleffort.altervista.org$ [NC,OR]
RewriteCond %{HTTP_HOST} ^www.minimaleffort.altervista.org$
RewriteCond %{REQUEST_URI} !public/
RewriteRule ^(.*)$ /public/index.php [QSA,L]