我知道这是一个非常流行的问题,但我还没有找到Laravel 5的有效解决方案。很长一段时间以来,我一直试图从Codeigniter迁移,但这个复杂的安装过程一直让我望而却步。
我不想运行一个虚拟机,这只是看起来尴尬时切换项目。
我不想将我的文档根文件夹设置为公共文件夹,这在项目之间切换时也很尴尬。
我已经尝试了.htaccess mod_rewrite方法
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>
这只是给了我一个Laravel NotFoundHttpException在compiled.php行7610。
当我前段时间尝试L4时,我使用了将公共文件夹的内容移动到根目录的方法。L5的结构完全不同,遵循相同的步骤完全破坏了Laravel(服务器只会返回一个空白页面)。
在开发环境中是否有一种合适的方法来删除“public”:
与L5一起工作
允许我轻松地在项目之间切换(我通常同时工作2或3个项目)。
谢谢
**我使用MAMP和PHP 5.6.2
@rimon。ekjon说:
将Laravel根文件夹中的server.php重命名为index.php,并将/public目录中的.htaccess文件复制到Laravel根文件夹中。——就是这样!!:)
这对我很管用。
但是/public目录中的所有资源文件都找不到,请求url也不工作,因为我使用了asset() helper。
我修改了/Illuminate/Foundation/helpers.php/asset()函数如下:
function asset($path, $secure = null)
{
return app('url')->asset("public/".$path, $secure);
}
现在一切正常了:)
谢谢你@rimon。艾克乔恩和你们所有人。
2020年作者更新
不建议使用此答案。
相反,建议处理.htaccess文件。
添加。htaccess文件到你的根文件夹,粘贴下面的代码,用你自己的域名替换yourdomainname
RewriteEngine上
重写HTTP_HOST} ^(www.)
^/public/ .重写%{REQUEST_URI}
RewriteCond %{REQUEST_FILENAME}
重写%{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /public/$1
重写HTTP_HOST} ^(www.)
RewriteRule ^ (/) ?$ /public/index.php