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

新手上路,请多包涵

我正在浏览互联网上所有可能的样本来解决这个问题。还是很头疼。

我只是想避免 www.mylaravelsite.com/public/ 中的“公共”,并使其像 www.mylaravelsite.com 用于根目录。

现在我不想避免安全问题,所以我了解到 .htaccess 将是最好的方法。

有解决的朋友吗?

并提前感谢您的互动!

原文由 Sagiruddin Mondal 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 841
2 个回答

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

.cpanel/
public_html/
public_ftp/
..

而laravel文件夹结构是

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

您可以在服务器上创建一个名为 mylaravelsite 的文件夹,其中包含 public_htmlpublic_ftp 文件夹,然后将除公共文件夹之外的整个 laravel 应用程序复制到其中,因为您会将其所有内容粘贴到 public_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',

您的网站应该正在运行。

原文由 lukaserat 发布,翻译遵循 CC BY-SA 3.0 许可协议

在服务器(Apache) 在根文件夹中创建 .htaccess 并写在下面的行

RewriteEngine on
RewriteCond %{REQUEST_URI} !^public
RewriteRule ^(.*)$ public/$1 [L]

更多地了解 Gist

在本地开发 中您可以通过将以下行添加到您的 apache vhost 配置文件来创建虚拟主机。一般可以在 C:\xampp\apache\conf\extra\httpd-vhosts.conf 文件中找到这个文件

<VirtualHost *:80>
  DocumentRoot "C:/xampp/htdocs/mysite/public/"
  ServerName www.mysite.local
</VirtualHost>

原文由 Shakil Alam 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题