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

2020/12/29 11:41 · php ·  · 0评论

我正在浏览互联网上所有可能的示例以解决此问题。仍然令人头疼。

我只是想避免使用“ public”,www.mylaravelsite.com/public/
而使其类似于
www.mylaravelsite.com根目录。

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

有什么解决方案的朋友吗?

并提前感谢您的互动!

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

.cpanel/
public_html/
public_ftp/
..

laravel文件夹结构是

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

您可以在服务器上与public_html内联的文件夹中创建一个名为mylaravelsite的public_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',

您的网站应该正在运行。

在根文件夹中创建.htaccess并写入以下行

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

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

听起来您缺少的信息是:

文档根

这也称为“网络根目录”。Apache专门将其称为DocumentRoot-单击该链接以获取官方说明。

基本上,它的作用是设置服务器从哪个目录提取文件。在Laravel中,文档根目录应该是public文件夹。

将DocumentRoot设置为public意味着实际上http://mylaravelsite.com在浏览器中转到该public文件夹实际上是“指向”所需的文件夹。

在.htaccess文件中(实际上,更可能是在虚拟主机配置中),可以DocumentRoot为您的站点设置

DocumentRoot /path/to/laravel-app/public

如何设置取决于您的主机。每种托管服务都有不同的网站设置方式,因此我们无法为您专门回答-您应咨询您的虚拟主机技术支持。关键是public目录应该是Web根目录,而其他所有目录都应该在“ Web根目录后面”。

合理的警告:某些托管服务提供商没有给您足够的访问权限来完成此任务。

将您的Web目录指向public/如果您使用的是apache,它将起作用:

<VirtualHost *:80>
  DocumentRoot /var/www.mylaravelsite.com/public/
  ServerName www.mylaravelsite.com
</VirtualHost>

只需在Laravel根目录上添加.htaccess文件(如果不存在),然后在其中添加以下几行,就是这样,

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

这是解决方案,但一定不能在实际项目中使用,它只是供初学者测试Laravel,我已经使用laravel 5.0进行了测试,它是从公共文件夹中剪切index.php和.htaccess文件并将其粘贴到根目录,并将这两行更改为

require __DIR__.'/bootstrap/autoload.php';
$app = require_once __DIR__.'/bootstrap/app.php';

强烈建议在没有测试环境的情况下不要使用上述方法,而应使用虚拟主机。

您只需要更改laravel项目文件中的.env文件即可。如果您的laravel项目在

根目录/域/ public_html / laravel /

转到.env文件并进行编辑

您需要编辑应为

APP_URL = http://www.domainname.com/laravel/public/

就是这样,您的项目将立即运行。如果您的laravel文件位于public_html中,则您的应用程序网址必须像这样

APP_URL = http://www.domainname.com

谢谢

在您的laravel项目的根目录中创建.htacess文件,并将此代码放入。

<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
    Options -MultiViews
</IfModule>

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ ^$1 [N]

RewriteCond %{REQUEST_URI} (\.\w+$) [NC]
RewriteRule ^(.*)$ public/$1 

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ server.php

对于流明

假设您有一个文件夹路径,例如:/ var / www / project / microservice(lumen src)

/ var / www => localhost /的文档根目录

您想要的目标:localhost / project / microservice [/ foo ...] => localhost / project / microservice / public / foo ...

我通过.htaccess(位于/ project文件夹中)执行此操作,如下所示:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !^.*/public/.*
RewriteCond %{REQUEST_URI} ^(/[^/]+/[^/]+/).*
RewriteRule ^[^/]+(.*)$ %1public$1 [L,R=301,P]
本文地址:http://php.askforanswer.com/bikailaraveldegonggongwenjianjiazhijiezaiwebfuwuqizhongdakaigenmulu.html
文章标签: ,   ,   ,   ,  
版权声明:本文为原创文章,版权归 admin 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!