从 URL Laravel 5.3 中删除公共
Posted
技术标签:
【中文标题】从 URL Laravel 5.3 中删除公共【英文标题】:Remove public from URL Laravel 5.3 【发布时间】:2017-02-27 05:24:01 【问题描述】:我使用的是 Laravel 5.3,有没有一种简单的方法可以从 URL 中删除 public?是否有必要添加一个htacces。当我更改 htacces 时,会出现如下错误,
【问题讨论】:
【参考方案1】:将 htaccess 和 index.php 文件从 public 文件夹复制到根目录,然后更改根 index.php 代码如下
require __DIR__.'/bootstrap/autoload.php';
$app = require_once __DIR__.'/bootstrap/app.php';
【讨论】:
风险太大。它使您的 composer.json、.env 和其他敏感信息可以通过浏览器访问。最佳做法是将 vhost 设置为 /public。 @MahfuzulAlam。感谢您在评论中通知 对不起,我不得不说。这是一个非常糟糕的建议,因为如果你这样做,你会在开发过程中发现很多错误,并且整个应用程序代码都会对网络开放。 @AlexeyMezenin。我希望他使用的是本地主机,否则他会将域指向公共文件夹 itslef【参考方案2】:安装 Laravel 后,你应该将你的 web 服务器的文档/web 根目录配置为公共目录。该目录中的 index.php 充当所有进入应用程序的 HTTP 请求的前端控制器。
https://laravel.com/docs/5.3/installation#configuration
不要编辑 .htaccess
或 Laravel 相关文件,只编辑 point web server to a public
directory instead of Laravel project directory:
DocumentRoot "/path_to_laravel_project/public"
<Directory "/path_to_laravel_project/public">
然后重新启动 Apache。
【讨论】:
这是正确的方法,但 Windows 7 上的最新 XAMPP(32 位)不能很好地播放。因此,我的团队正在实施上面给出的已接受答案。【参考方案3】:在根目录中添加一个.htaccess
文件,其中包含 -
RewriteEngine On
RewriteRule ^(.*)$ public/$1 [L]
【讨论】:
【参考方案4】:是的,很简单,不需要添加额外的htaccess,
-
在您的 laravel 项目文件夹中创建一个新文件夹。
随意命名。示例:- 来源
-
将所有文件从根目录移至“源”文件夹,“公共”文件夹除外。
4 。将公用文件夹中的所有文件移至根目录。
5 .更改 autoload.php 路径
6 .就这样。如有必要,删除公用文件夹。
【讨论】:
【参考方案5】:在根目录下创建一个.htaccess文件并将以下内容放入 它
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>
【讨论】:
【参考方案6】:即使上面的解决方案也适合您,但我建议不要这样做。 原因如下。 - 您应该将 Apache 主机根目录指向 $LARAVEL_PATH/public 目录,而不是 $LARAVEL_PATH。 - 你必须为用户配置 apache 不能访问 .env、git 文件、配置文件夹的文件 公共目录的存在是为了使项目更加安全。解决实际问题,不要试图破坏这个简单但很好的安全附加。
【讨论】:
【参考方案7】:将公用文件夹中的所有文件和文件夹复制到根文件夹并将您的.htaccess
文件编辑为
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
并且不要忘记更改 index.php 文件中的路径。 详情参考以下链接
Installing Laravel in a subfolder
https://ellislab.com/forums/archive/viewthread/151342/#734511
【讨论】:
以上是关于从 URL Laravel 5.3 中删除公共的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 7.x - 如何从 URL 中删除“公共”?
如何使用 Request $request 从 url 获取 id? (Laravel 5.3)