如何在Laravel中以root身份创建公用文件夹?

时间:2016-11-23 05:25:07

标签: php laravel

我使用Laravel框架。如您所知,其目录如下所示:

enter image description here

要打开我网站的主页(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。有什么建议吗?

4 个答案:

答案 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>