[英]How to make public folder as root in Laravel?
我使用 Laravel 框架。 如您所知,它的目录如下所示:
要打开我网站的主页( Route::get('/', 'HomeController@index');
),我需要打开目录的/public
文件夹。 换句话说,要查看我网站的第一页,这里是 URL:
http://example.com/public
无论如何,只有我的域名( http://example.com/
)不是我的根。 如何以 root 身份创建/public
文件夹?
目前我找到了一个解决方法。 我可以在根目录上创建一个index.php
并将重定向代码写入/public
文件夹。 因此,当用户输入http://example.com/
,它将自动重定向到http://example.com/public
。 但这仍然是丑陋的。 我不喜欢在 URL 中看到/public
。 有什么建议吗?
有很多方法可以做到这一点。
您只需要从公共目录中剪切index.php
和 .htaccess 并将其粘贴到根目录中即可,将index.php
中的两行替换为
require __DIR__.'/bootstrap/autoload.php';
$app = require_once __DIR__.'/bootstrap/app.php';
最好的方法是.htaccess
。 在 Laravel 安装的根目录中创建.htaccess
文件。 下面的代码将适用于此。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>
您可以从这里阅读: WAY TO DO
不要修改任何 Laravel 文件。 使用 Web 服务器(Apache 或 Nginx)将Laravel 项目指向public
目录。
对于 Apache,您可以使用这些指令:
DocumentRoot "/path_to_laravel_project/public"
<Directory "/path_to_laravel_project/public">
对于 nginx,您应该更改此行:
root /path_to_laravel_project/public;
第 1 步:将您的/public/index.php和/public/htaccess文件作为/index.php和/htaccess放入您的根目录。
第 2 步:现在在 index.php 中进行更改
require __DIR__.'/../bootstrap/autoload.php'; //OLD code
$app = require_once __DIR__.'/../bootstrap/app.php';
到
require __DIR__.'./bootstrap/autoload.php'; //NEW code
$app = require_once __DIR__.'./bootstrap/app.php';
对于Ubuntu 20.04
,对虚拟主机执行以下操作。 同样在等待几分钟后,清除浏览器缓存并重新加载。
sudo mkdir /var/www/<your domain>/public
sudo chown -R $USER:$USER /var/www/<your domain>
sudo nano /etc/apache2/sites-available/<your domain>.conf
然后在文件中粘贴
<VirtualHost *:80>
ServerName <your domain>
ServerAlias www.<your domain>
ServerAdmin <your email address>
DocumentRoot /var/www/<your domain>/public
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
然后运行
sudo a2ensite <your domain>
sudo a2dissite 000-default
sudo systemctl reload apache2
nano /var/www/<your domain>/public/index.html
然后粘贴到文件中
<html>
<head>
<title><your domain></title>
</head>
<body>
<center>
<p>Site Under Maintenance</p>
</center>
</body>
</html>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.