避免使用laravel的公用文件夹,并直接在Web服务器中打开根目录

2022-08-30 11:25:24

我正在浏览互联网上所有可能的样本来解决这个问题。这仍然是一个令人头疼的问题。

我只想避免“公共”,让它像根目录一样。www.mylaravelsite.com/public/www.mylaravelsite.com

现在我不想回避安全问题,所以我学会了会是最好的方法。.htaccess

任何解决方案的朋友?

&提前感谢互动!


答案 1

假设您的服务器中有此文件夹结构

.cpanel/
public_html/
public_ftp/
..

而拉拉维尔文件夹结构是

app/
bootstrap/
public/
vendor/
composer.json
artisan
..

您可以在与 和 内联的服务器上创建一个名为 mylaravelsite 的文件夹,并将除公用文件夹之外的整个 laravel 应用程序复制到其中,因为您将所有内容粘贴到 上,因此您现在拥有:public_htmlpublic_ftppublic_html

.cpanel/
public_html/
public_html/packages
public_html/vendor
public_html/index.php
public_html/.htaccess
...
public_ftp/
mylaravelsite/
mylaravelsite/app
mylaravelsite/bootstrap
...

在更改中,以下行:public_html/index.php

require __DIR__.'/../bootstrap/autoload.php';

$app = require_once __DIR__.'/../bootstrap/start.php';

require __DIR__.'/../mylaravelsite/bootstrap/autoload.php';

$app = require_once __DIR__.'/../mylaravelsite/bootstrap/start.php';

也不要忘记改变公共路径,你可以使用它。/mylaravelsite/bootstrap/paths.php

'public' => __DIR__.'/../public',

'public' => __DIR__.'/../../public_html',

您的网站应该正在运行。


答案 2

在根文件夹中创建 .htaccess 并写入这些行

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule ^(.*)$ public/$1 [L]
</IfModule>

对于生产服务器,建议将域直接指向公用文件夹


推荐