Laravel 8 应用程序返回 404 Not Found

时间:2021-07-16 08:01:27

标签: php laravel deployment

我有一个在服务器上正常运行的 Laravel 8 应用程序。我已将其移至另一台服务器,但现在在新服务器上找不到 404。我没有在新服务器上改变任何东西,所以我相信它一定是与服务器相关的问题。我无法诊断服务器上的问题。详细信息是有关服务器上应用程序的一些详细信息:

文件权限遵守以下内容

chown -R apache.apache /var/www/LARAVEL_APP
chmod -R 755 /var/www/LARAVEL_APP
chmod -R 755 /var/www/LARAVEL_APP/storage

已使用以下命令清除路由和缓存:

php artisan route:clear
php artisan cache:clear
php artisan config:clear
php artisan cache:clear

.htaccess 文件在 LARAVAL-APP/public 目录下:

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews -Indexes
    </IfModule>
   Options +FollowSymlinks
    RewriteEngine On

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

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

    # Send Requests To Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

导航到 LARAVEL-APP 的根目录时,我可以正确看到以下屏幕。当我尝试加载位于 index.htmlLARAVEL-APP/public/index.php/admin/login 时出现问题 enter image description here

路线列表

列表在执行 php artisan route:list | grep admin/login 时可用

|        | POST                                   | admin/login                                           | generated::LTvCw5lDDMDMdfPT                        | Brackets\AdminAuth\Http\Controllers\Auth\LoginController@login                                   | web                                                              |
|        | GET|HEAD                               | admin/login                                           | brackets/admin-auth::admin/login                   | Brackets\AdminAuth\Http\Controllers\Auth\LoginController@showLoginForm

404 屏幕

下面是我得到的 404 屏幕,它似乎来自 Laravel 本身。 enter image description here

2 个答案:

答案 0 :(得分:1)

在 .htaccess 文件中试试这个代码

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>

我希望这对你有用。

答案 1 :(得分:1)

您好像还没有启用 mod-rewrite,试试这个:

sudo a2enmod rewrite

还要确保你在你的 apache conf 中这样做:

<Directory "/var/www/">
    # ...
    AllowOverride All
    Require all granted
</Directory>

也重启apache:

sudo service apache2 restart