PHP框架和ftp共享托管仅在public_html

时间:2017-05-19 10:38:23

标签: php .htaccess mod-rewrite slim

最近我试图学习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)

enter image description here

一切正常,对吗?不,错,如果我输入路线(例如默认的应用路线)

/{name}

它会返回一个404错误页面,而它应该在屏幕上打印我放在URL中的任何名称,我错过了什么吗? 如果您想直接查看网站here's the url

1 个答案:

答案 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]