首页 > 解决方案 > Laravel 在本地 ubuntu 20 中显示空白页

问题描述

我正在使用 ubuntu 20,laravel 项目使用php artisan serve运行,但是当我使用这个 URL laravel-local.com访问该站点时,它显示空白页

无法得到任何错误

网站可用

 <VirtualHost *:80>
  ServerAdmin admin@MyWebsite.com
  DocumentRoot /var/www/html/laravel-local.com/public
  ServerName laravel-local.com

  <Directory /var/www/html/laravel-local.com/public>
     Options +FollowSymlinks
     AllowOverride All
     Require all granted
  </Directory>

  ErrorLog ${APACHE_LOG_DIR}/error.log
  CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

我试过的

  1. 授予项目 777 访问权限
  2. 更改所有权
  3. 删除存储/框架内的文件夹
  4. 更改存储文件夹权限
  5. composer dump-autoload, php artisan 缓存和配置清除
  6. 删除公用文件夹中的 .htaccess 文件

我尝试了上述所有步骤仍然有一个空白页

根文件夹中的 .htaccess 文件

<IfModule mod_rewrite.c>

RewriteEngine  On
RewriteRule ^(.*)$ public/$1 [L]

</IfModule>

公共文件夹中的 .htaccess

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

RewriteEngine On

# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]

# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]

# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</IfModule>

标签: laravelapache.htaccessubuntu

解决方案


<IfModule mod_rewrite.c>

RewriteEngine  On
RewriteRule ^(.*)$ public/$1 [L]

</IfModule>

您不需要这样的.htaccess文件(它需要放在目录上方/public目录中),因为您已经将/public目录配置为DocumentRoot服务器配置中的 。

如果您还删除了子目录中的.htaccess文件,/public那么这将导致重写循环(500 错误)。

您只需要文档根目录中的标准 Laravel 前端控制器(.htaccess文件),即。在/public子目录中。

但是,您应该在您的 vHost(容器)或 Laravel 主文件的顶部(文件夹内)中定义DirectoryIndex(如果尚未在服务器配置中的某处设置)。如果没有定义,那么对 Laravel 目录本身(主页)的请求将不会通过 Laravel 路由,并且可能会导致来自 Apache 的 403 Forbidden 响应(或者更糟糕的是,如果已启用目录列表)。<Directory>.htaccess/publicIndexes

例如:

DirectoryIndex index.php

推荐阅读