Lararvel 4 路由通过索引页面不适用于网络派系


Lararvel 4 routes past index page don't work on webfactions

我正在尝试使用WebFactions来托管使用Laravel 4构建的网站。 我已经成功地遵循了这样的教程:http://euantor.com/using-laravel-with-webfaction/

索引页面加载

完美,但我链接到的任何其他页面似乎都有问题,给出 500 错误(表明路由.php以某种方式不起作用)。

纵观事情,似乎我需要更改 apache 服务器的 httpd.conf,我在 webfaction 上无法访问它。 我尝试使用laravel提供的两个.htaccess文件(它附带的默认文件,以及这个):

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]

但这似乎也没有解决问题。 有谁知道让 Laravel 4 处理网络派系的方法,以便通过索引页面的进一步路由有效?

首先,您无需更改虚拟主机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 等。

还要确保在网络目录的根目录中有两个Laravel文件:

  • .htaccess
  • 索引.php

.htaccess.php在您的网络目录中

<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代码。有人可以解释一下它是如何工作的吗?

索引.php在您的网络目录中

此文件中有两个重要条目。第一个在"注册自动加载程序"部分中。确保你有这样的东西(也可以是相对路径):

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

第二个重要条目位于"打开灯"部分中。确保它说这样的话(只要你做对了,也可以是相对路径):

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

拉拉

维拉普斯的公共路径

还有一件事要更改位于/home/myuser/laravelapps/mysite/bootstrap/paths.php公共路径部分。确保它指向您的 Web 文件夹,例如:

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

其他东西

上面的设置应该可以解决问题。但是,根据您提供的(缺乏)信息,不可能排除其他Laravel配置文件(位于/home/myuser/laravelapps/mysite/app/config或文件权限)的其他问题。请先尝试上述内容,然后让我们知道情况如何?

相关文章: