smu*_*urf 1 php apache .htaccess laravel-4
我正在尝试使用WebFactions来托管我使用Laravel 4构建的网站.我已经成功地遵循了这样的教程:http://euantor.com/using-laravel-with-webfaction/
索引页面加载完美,但是我链接到的任何其他页面似乎都有问题,给出500错误(表明routes.php不能以某种方式工作).
看一看,似乎我需要更改apache服务器的httpd.conf,我无法访问webfactions.我尝试过使用laravel提供的两个.htaccess文件(它附带的默认文件,以及这个文件):
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
Run Code Online (Sandbox Code Playgroud)
但这似乎也没有解决问题.有没有人知道如何让Laravel 4在webfactions上工作,以便通过索引页面的其他路由有效?
首先,你就不会需要改变的httpd.conf的虚拟主机,使Laravel正常工作.
根据您提供的有限信息量,无法分辨您的配置有什么问题.但是,我可以从Webfaction(而不是Webfactions)的Web站点为您提供工作示例配置.
目录结构
/home/myuser
|--> webapps
| --> mysite (This is your public web directory)
|--> laravelapps
--> mysite (Laravel installation, incl. routes.php)
--> app
--> models
--> views
--> etc.
Run Code Online (Sandbox Code Playgroud)
为了安全起见,您应该为Web内容和Laravel文件分别设置文件夹.换句话说,不要将Laravel文件和配置放在公共Web目录下.
网站目录
将需要通过HTTP协议获取的任何文件放入此目录:webapps/mysite.例如,创建子目录css,js,images等.
还要确保在web目录的根目录中有两个Laravel文件:
.htaccess.php在您的网站目录中
<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
Run Code Online (Sandbox Code Playgroud)
这样做是将所有Laravel请求重定向到index.php.有关这些行的更详细说明,请查看有关非常相似的.htaccess的答案:这是WordPress中的.htaccess代码.有人能解释它是如何工作的吗?
index.php在你的web目录下
此文件中有两个重要条目.第一个是注册自动加载器部分.确保你有这样的东西(也可以是相对路径):
require '/home/myuser/laravelapps/mysite/bootstrap/autoload.php';
第二个重要的条目是在Turn On The Lights部分.确保它说的是这样的东西(只要你做对了就可以再次成为相对路径):
$app = require_once '/home/myuser/laravelapps/mysite/bootstrap/start.php';
Laravelapps的公共道路
还有一件事需要改变,它位于公共路径部分的/home/myuser/laravelapps/mysite/bootstrap/paths.php中.确保它指向您的web文件夹,例如:
'public' => '/home/myuser/webapps/mysite',
其他的东西
上面的设置应该可以解决问题.但是,根据您提供的(缺少)信息,无法排除其他Laravel配置文件(位于/ home/myuser/laravelapps/mysite/app/config或文件权限)的其他问题.请先试试上面的内容,让我们知道它是怎么回事?