我使用这篇文章的 3 解决方案并且工作正常:
http://web.archive.org/web/20130320184846/http://forums.laravel.io/viewtopic.php?id=1258
解决方案 1 - 带有符号链接的备用安装路径。
这是首选的解决方案,通常是一个全方位的好主意。可以将您的应用程序安装到与 public_html/ 无关的文件夹,然后将 public 文件夹符号链接到 public_html/ 路径。
例如:
将您的应用程序安装到 /home/applications/mysite.com
假设您的 DocumentRoot 指向 /var/www/vhosts/mysite.com/httpdocs
从 mysite.com vhosts 文件夹中删除 httpdocs 文件夹,然后使用符号链接将两者连接起来:ln -s /home/applications/mysite.com/public /var/www/vhosts/mysite.com/httpdocs
解决方案 2 - .htaccess 与 mod_rewrite
此解决方案使您可以将 Laravel 放入您的公用文件夹,然后使用 .htaccess 文件将请求重定向到公用文件夹。此解决方案将您的应用程序和核心系统代码放入可公开访问的文件夹中。这不是我们鼓励您使用任何 PHP 框架做的事情。
步骤 1. 将 Laravel 放在你的文档根文件夹中。
第 2 步。将以下 .htaccess 文件放入您的文档根文件夹中。
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_URI} !^public
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>
第 3 步。确保您在 application/config/application.php 中手动设置“url”配置,否则 Laravel 将生成错误的 URL。确保您的每个环境都具有正确的 application.url 配置。有关特定于环境的配置的更多信息,请参阅:http://laravel.com/docs/install#environments
解决方案 3 - 将公用文件夹合并到安装根目录
此解决方案将您的应用程序和核心系统代码放入可公开访问的文件夹中。这不是我们鼓励您使用任何 PHP 框架做的事情。
将 public/ 文件夹的内容复制到 Laravel 安装文件夹中,然后将 index.php 文件中的这一行更改为:
require '../paths.php';
到
require 'paths.php';
请记住,任何捆绑包、库或其他类型的第三方代码都不得设计为可公开访问。
注意:同样重要的是要注意您的 bundles/ 和 public/bundles/ 目录现在会发生冲突。使用这种方法时,您可能不想使用 artisan 的 bundle:publish 任务,但不知道您的 bundle 要发布什么。