我使用Laravel框架。如您所知,其目录如下所示:
要打开我网站的主页(Route::get('/', 'HomeController@index');
),我需要打开目录的/public
文件夹。换句话说,要查看我网站的第一页,请输入以下网址:
http://example.com/public
无论如何,仅我的域名(http://example.com/
)不是我的根。如何以root身份创建/public
文件夹?
我可以找到一个解决方法。我可以在根上创建index.php
并将重定向代码写入/public
文件夹。因此,当用户输入http://example.com/
时,系统会自动将其重定向到http://example.com/public
。但那仍然是丑陋的。我不想在网址中看到/public
。有什么建议吗?
答案 0 :(得分:9)
有很多方法可以做到这一点。
您只需要从公共目录中剪切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
答案 1 :(得分:3)
不要混淆任何Laravel文件。使用Web服务器(Apache或Nginx)指向Laravel project to public
directory。
对于Apache,您可以使用以下指令:
DocumentRoot "/path_to_laravel_project/public"
<Directory "/path_to_laravel_project/public">
对于nginx,您应该更改此行:
root /path_to_laravel_project/public;
答案 2 :(得分:0)
第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';
答案 3 :(得分:0)
对于 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>