Lararvel 4在Webfactions上的路由在索引页之后无法正常工作。

14 浏览
0 Comments

Lararvel 4在Webfactions上的路由在索引页之后无法正常工作。

我正在尝试使用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]

但是这似乎也没有解决问题。有人知道在WebFactions上让Laravel 4正常工作,使得除了首页以外的其他路由也能正常运行吗?

0
0 Comments

Laravel 4在Webfactions上无法正常工作的问题可能是由于以下原因引起的。

首先,不需要更改虚拟主机的httpd.conf文件来使Laravel正常工作。

根据您提供的有限信息,很难确定配置有什么问题。但是,我可以提供一个在Webfaction上的工作示例配置文件,供您参考。

目录结构如下:

/home/myuser
|--> webapps
|  --> mysite  (这是您的公共网站目录)
|--> laravelapps
   --> mysite  (Laravel安装目录,包括routes.php)
     --> app
       --> models
       --> views
       --> etc.

为了安全起见,您应该为Web内容和Laravel文件使用不同的文件夹。换句话说,不要将Laravel文件和配置放在公共网站目录下。

Web目录中的文件需要通过HTTP协议进行获取。例如,创建子目录css、js、images等。

同时,请确保您的网站根目录下有两个Laravel文件:

- .htaccess

- index.php

在您的网站目录的.htaccess文件中,添加以下代码:

Options -MultiViews

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^ index.php [L]

这段代码将所有的Laravel请求重定向到index.php。更详细的描述请参考这个回答:This is the .htaccess code in WordPress. Can someone explain how it works?

在您的网站目录的index.php文件中,有两个重要的条目。第一个是在“Register The Auto Loader”部分。确保您有类似以下的代码(也可以是相对路径):

require '/home/myuser/laravelapps/mysite/bootstrap/autoload.php';

第二个重要的条目是在“Turn On The Lights”部分。确保它类似以下的代码(同样可以是相对路径):

$app = require_once '/home/myuser/laravelapps/mysite/bootstrap/start.php';

还有一个需要更改的地方位于/home/myuser/laravelapps/mysite/bootstrap/paths.php文件的“Public Path”部分。确保它指向您的Web文件夹,例如:

'public' => '/home/myuser/webapps/mysite',

以上设置应该可以解决问题。但是,根据您提供的信息(或者是缺乏信息),无法排除其他Laravel配置文件(位于/home/myuser/laravelapps/mysite/app/config)或文件权限的问题。请首先尝试上述方法,并告诉我们结果如何。

非常感谢您提供的所有信息。我实际上更改了.htaccess文件,解决了问题。我将“^ index.php”更改为“^(.*)$ /index.php/$1”。仍在寻找导致我需要更改它的原因,并将检查所有这些代码行以确保它们正确。

0