首先,您无需更改虚拟主机的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。例如,创建子目录css、js、images等。
还要确保你的 web 目录的根目录中有两个 Laravel 文件:
.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或文件权限)的问题。请先尝试上面的事情,然后告诉我们进展如何?