Php Laravel有时显示404未找到页面

Php Laravel有时显示404未找到页面,php,laravel,routes,http-status-code-404,Php,Laravel,Routes,Http Status Code 404,我正在使用Larvel 8,当我刷新页面或直接通过链接显示打开页面时,有时会遇到问题 找不到404页错误,我在互联网上尝试了很多解决方案,但都没有解决方案 另一个注意事项:当我使用ajax发送请求时,它也会为我显示,这是我显示最多的时间 Myweb.php: <?php use App\Http\Middleware\AdminAuth; use Illuminate\Support\Facades\App; use Illuminate\Support\Facades\Route;

我正在使用Larvel 8,当我刷新页面或直接通过链接显示打开页面时,有时会遇到问题

找不到404页错误,我在互联网上尝试了很多解决方案,但都没有解决方案

另一个注意事项:当我使用ajax发送请求时,它也会为我显示,这是我显示最多的时间

Myweb.php

<?php

use App\Http\Middleware\AdminAuth;
use Illuminate\Support\Facades\App;
use Illuminate\Support\Facades\Route;

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

$adminPathName = env('ADMIN_PATH');

Route::get($adminPathName . '/test/{locale}', function ($locale) {
    session('lang', 'en');

    app()->setLocale($locale);
    echo App::getLocale();
});

Route::get('/', function () {
    return view('frontend.home');
});

$adminPathName = env('ADMIN_PATH');
$userPath = env('USER_PATH');

Route::get($adminPathName . '/login', 'Admin\LoginController@login');
Route::post($adminPathName . '/signin', 'Admin\LoginController@signin');
Route::group(['middleware' => ['AdminAuth']], function () {
    $adminPathName = env('ADMIN_PATH');
    Route::get($adminPathName . '/dashboard', 'Admin\AdminController@home');
    Route::get($adminPathName . '/languages/manage-languages', 'Admin\LanguageController@index');
    Route::post($adminPathName . '/languages/add-language', 'Admin\LanguageController@addLanguage');
    Route::post($adminPathName . '/languages/add-translate', 'Admin\LanguageController@addTranslate');
    Route::post($adminPathName . '/languages/update-translate', 'Admin\LanguageController@updateTranslate');
    Route::post($adminPathName . '/languages/remove-translate', 'Admin\LanguageController@removeTranslate');
    Route::post($adminPathName . '/languages/remove-language', 'Admin\LanguageController@removeLanguage');
    Route::post($adminPathName . '/languages/sync-language', 'Admin\LanguageController@syncLanguage');
    Route::get($adminPathName . '/languages/translate/{langId}', 'Admin\LanguageController@translateById');
});


// todo this route should be added below .
Route::get('/login/facebook/callback', 'User\LoginController@facebookCallback');

Route::group(['prefix' => '/{locale}', 'middleware' => \App\Http\Middleware\SetLocale::class, 'as' => 'locale'], function () {

    $userPath = env('USER_PATH');

    Route::get('/', function () {
        return view('frontend.home');
    });
    Route::get($userPath . '/login', 'User\LoginController@login');
    Route::post($userPath . '/signin', 'User\LoginController@signin');
    Route::get($userPath . '/create-account', 'User\UserController@createAccount');
    Route::post($userPath . '/complete-register', 'User\UserController@completeRegister');

    /* Facebook Login & Register  */

    Route::get($userPath . '/social/facebook/redirect', 'User\LoginController@facebookRedirect');
    /* ./ Facebook Login & Register  */

    /* Google Login & Register  */
    Route::get($userPath . '/social/google/redirect', 'User\LoginController@googleRedirect');
    Route::get($userPath . '/social/google/callback', 'User\LoginController@googleCallback');
    /* ./ Google Login & Register  */

    Route::get('/change-language/{lang}', 'User\WebSiteController@changeLanguage');

    Route::group(['middleware' => ['UserAuth']], function () {
        $userPath = env('USER_PATH');
        Route::get($userPath . '/dashboard', 'User\UserController@dashboard');
        Route::get($userPath . '/update-profile', 'User\UserController@userProfile');
        Route::get($userPath . '/website/create-website', 'User\WebSiteController@newWebsite');
        Route::post($userPath . '/card/upload-gallery', 'User\UserController@uploadGallery');
        Route::get($userPath . '/cards/new-card/{card_lang}', 'User\CardController@newCard');
        Route::get($userPath . '/cards/new-card/{card_lang}/{card_key}', 'User\CardController@newCard');
        Route::post($userPath . '/cards/get-card-gallery', 'User\CardController@getGalleryByCardId');
        Route::post($userPath . '/cards/update-card', 'User\CardController@updateCard');
        Route::post($userPath . '/cards/update-card-logo', 'User\CardController@updateCardLogo');

        Route::get($userPath . '/logout', function () {
            auth('UserAuth')->logout();
            return redirect(ulocale_path('/login'));
        });
    });


});


Route::group(['domain' => '{account}.localhost'], function () {
    Route::get('/{id}/card', 'User\CardController@shoBusinessCardById');
});
控制器端
getGalleryByCardId

public function getGalleryByCardId(Request $request)
{
    $imgs = DB::table('card_docs')
        ->where('user_id', usession('user_id'))
        ->where('card_key', $request->card_key)->get();

    return $imgs;
}

根据您的描述,我觉得路由文件中的调用可能是问题所在

当由于加载时间延迟或任何其他问题,Laravel无法从
.env
文件中读取环境值时,它不会给出与环境变量不可用相关的任何错误,但会继续处理

由于路由文件使用
env()
获取值。env
这些值不可用会更改路由的url,因此可能会出现404错误

类似于
$userPath=env('USER_PATH')
$adminPath=env('ADMIN_PATH')
将导致$userPath和$adminPath的值都为null,如果存在加载环境变量的问题,但执行将继续

因此,在URL中使用这些变量的地方,这些URL将在使用变量的地方更改为null值

当您得到404时,您可以检查错误日志:如果它们有任何数据库或加密相关错误的条目-很可能是由于DotEnv无法及时读取
.env

@Donkarnash实际上我不是Laravel的专业人士怎么能把它放在配置文件中?你能给我解释一下吗

您可以在
config/custom.php
name任意位置创建一个新文件,而不是
custom.php

返回[
'userPath'=>env('USER_PATH'),
'adminPath'=>env('ADMIN_PATH'),
];
然后,您可以在路由文件中进行更改,以便将这些值与
config()
helper一起使用

Route::get(config('custom.adminPath')。/login','Admin\LoginController@login');
路由::post(配置('custom.adminPath')。/sign','Admin\LoginController@signin');
路由::前缀(配置('custom.adminPath'))
->中间件(['AdminAuth'])
->组(函数(){
路由::获取('/dashboard','Admin\AdminController@home');
路由::获取('/languages/manage languages','Admin\LanguageController@index');
路由::post('/languages/add language','Admin\LanguageController@addLanguage');
路由::post('/languages/add translate','Admin\LanguageController@addTranslate');
路由::post('/languages/update translate','Admin\LanguageController@updateTranslate');
路由::post('/languages/remove translate','Admin\LanguageController@removeTranslate');
路由::post('/languages/remove language','Admin\LanguageController@removeLanguage');
路由::post('/languages/sync language','Admin\LanguageController@syncLanguage');
路由::get('/languages/translate/{langId}',Admin\LanguageController@translateById');
});
//todo应在下面添加此路线。
路由::get('/login/facebook/callback','User\LoginController@facebookCallback');
路由::前缀('/{locale}/'.config('custom.userPAth'))
->中间件([\App\Http\middleware\SetLocale::class])
->as('locale')
->组(函数(){
路由::get(“/”,函数(){
返回视图(“frontend.home”);
});
路由::获取('/login',用户\LoginController@login');
路由::post('/signin','用户\LoginController@signin');
路由::获取('/create account',用户\UserController@createAccount');
路由::post('/complete register',用户\UserController@completeRegister');
/*Facebook登录和注册*/
路由::获取('/social/facebook/redirect','用户\LoginController@facebookRedirect');
/*/Facebook登录和注册*/
/*谷歌登录和注册*/
路由::get('/social/google/redirect','User\LoginController@googleRedirect');
路由::get('/social/google/callback','User\LoginController@googleCallback');
路由::get('/change language/{lang}',User\WebSiteController@changeLanguage');
路由::组(['middleware'=>['UserAuth']],函数(){
路由::获取('/dashboard','用户\UserController@dashboard');
路由::获取('/update profile','用户\UserController@userProfile');
路由::获取('/website/create website','用户\WebSiteController@newWebsite');
路由::post('/card/upload gallery','用户\UserController@uploadGallery');
路由::获取('/cards/new card/{card_lang}',用户\CardController@newCard');
路由::获取('/cards/new card/{card\u lang}/{card\u key}',用户\CardController@newCard');
路线::post('/cards/get card gallery','用户\CardController@getGalleryByCardId');
路由::post('/cards/update card','用户\CardController@updateCard');
路线::张贴('/cards/update card logo','用户\CardController@updateCardLogo');
路由::获取('/logout',函数(){
auth('UserAuth')->logout();
返回重定向(ulocale_路径('/login');
});
});
});
路由::组(['domain'=>'{account}.localhost'],函数(){
路由::获取('/{id}/card','用户\CardController@shoBusinessCardById');
});
通过使用config中的值而不是env,您可以通过配置缓存获得好处


在生产中,您还可以通过缓存路由来缓解路由url相关的问题,但为此,您需要将基于闭包的路由转换为基于控制器的路由。

有时错误很难调试。你没有找到404的序列吗?在404错误中,如果你刷新页面,你会得到什么?又是404吗?请分享行动代码CardController@getGalleryByCa
 Route::post($userPath . '/cards/get-card-gallery', 'User\CardController@getGalleryByCardId');
public function getGalleryByCardId(Request $request)
{
    $imgs = DB::table('card_docs')
        ->where('user_id', usession('user_id'))
        ->where('card_key', $request->card_key)->get();

    return $imgs;
}