1

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

但这似乎也没有解决问题。有谁知道让 Laravel 4 在 webfactions 上工作的方法,以便通过索引页面的进一步路由工作?

4

1 回答 1

5

首先,您无需更改虚拟主机的httpd.conf即可使 Laravel 正常运行。

根据您提供的有限信息,无法判断您的配置有什么问题。但是,我可以从我的 Webfaction(不是 Webfaction)的网站为您提供一个工作示例配置。

目录结构

/home/myuser
|--> webapps
|  --> mysite  (This is your public web directory)
|--> laravelapps
   --> mysite  (Laravel installation, incl. routes.php)
     --> app
       --> models
       --> views
       --> etc.

为了安全起见,您应该为 Web 内容和 Laravel 文件设置单独的文件夹。换句话说,不要将 Laravel 文件和配置放在你的公共 web 目录下。

网页目录

将需要通过 HTTP 协议获取的任何文件放入此目录:webapps/mysite。例如,创建子目录cssjsimages等。

还要确保你的 web 目录的根目录中有两个 Laravel 文件:

  • .htaccess
  • 索引.php

.htaccess.php 在您的 Web 目录中

<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>

这样做是将所有 Laravel 请求重定向到index.php。有关这些行的更详细描述,请查看有关非常相似的.htaccess的答案:这是 WordPress 中的 .htaccess 代码。有人可以解释它是如何工作的吗?

您的 Web 目录中的 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';

Laravelapps 的公共路径

要更改的另一件事是位于Public Path部分中的/home/myuser/laravelapps/mysite/bootstrap/paths.php。确保它指向您的 web 文件夹,例如:

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

其他的东西

上面的设置应该可以解决问题。但是,根据您提供的(缺少)信息,无法排除其他 Laravel 配置文件(位于/home/myuser/laravelapps/mysite/app/config或文件权限)的问题。请先尝试上面的事情,然后告诉我们进展如何?

于 2013-11-14T23:31:10.287 回答