如何在Laravel中将公共文件夹设置为root?

ssm49v7z  于 2023-05-01  发布在  其他
关注(0)|答案(3)|浏览(141)

我用的是Laravel框架。如您所知,它的目录如下所示:

要打开我的网站(Route::get('/', 'HomeController@index');)的主页,我需要打开目录的/public文件夹。换句话说,要查看我的网站的第一页,这里是URL:

http://example.com/public

总之,只有我的域名(http://example.com/)不是我的根。如何将/public文件夹设为root?
目前我找到了一个变通办法。我可以在根目录上创建一个index.php,并将重定向代码写入/public文件夹。因此当用户输入http://example.com/时,它将自动重定向到http://example.com/public。但还是很丑。我不喜欢在URL中看到/public。有什么建议吗?

kqlmhetl

kqlmhetl1#

不要修改任何Laravel文件。相反,将您的Web服务器(Apache或Nginx)配置为指向Laravel project's public directory
对于Apache,您可以使用以下指令:

DocumentRoot "/path_to_laravel_project/public"
<Directory "/path_to_laravel_project/public">

对于nginx,您应该更改这一行:

root /path_to_laravel_project/public;

将文档根目录设置为/path_to_laravel_project/会带来严重的安全风险,可能会将整个应用程序配置公开到互联网上。

35g0bw71

35g0bw712#

要在Ubuntu上运行Apache,请执行以下操作。假设你已经安装了Composer和PHP。

# create your web directory
sudo mkdir -p /var/www/example.com
# install laravel
cd /var/www/example.com
composer create-project laravel/laravel example-app
# proper ownership
sudo chown -R www-data:www-data /var/www/example.com
# create a configuration
sudo nano /etc/apache2/sites-available/example.com.conf

然后在文件中粘贴

<VirtualHost *:443>
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/example.com/public
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    # SSL configuration, etc.
</VirtualHost>

那就跑啊

# enable your site
sudo a2ensite <your domain>
# disable the default site
sudo a2dissite 000-default
# restart the web server
sudo systemctl reload apache2
7cjasjjr

7cjasjjr3#

第一步:把你的**/public/index。php/public/htaccess文件以/index的形式转移到根目录中。php/htaccess**。
步骤2:现在在索引中进行更改。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';

相关问题