从 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 中删除公共的主要内容,如果未能解决你的问题,请参考以下文章

从 url laravel 5.4 中删除公共

Laravel 7.x - 如何从 URL 中删除“公共”?

从 laravel 5.4 中删除 public

如何使用 Request $request 从 url 获取 id? (Laravel 5.3)

在 Laravel 5.3 的中间件中访问路由 URL 参数

在 laravel 5.3 中删除哈希进程