首页 > 解决方案 > Laravel 根路由“/”在子域的前缀路由中不起作用

问题描述

我有以下路线的项目:

Route::namespace('Admin')->prefix('admin')->group(function () {
    Route::group(['middleware' => 'auth:admin'], function () {
    // this is working on my local machine but it's skipped on server which is a subdomain.
        Route::get('/', 'DashboardController@index')->name('admin.dashboard'); 

        // other routes here. all of them working fine
        Route::resource('pages', 'PageController')->except(['show']);
    });
});
Route::get('/', 'HomeController@index'); // this is working fine

在我的本地机器上,当我打开 app.test/admin 时,一切都按预期工作。如果我没有登录,我可以看到我的登录页面,如果我登录,我可以看到仪表板视图。在服务器上,这是一个子域,如果我打开 subdomain.app.com/admin 我什么也看不到。服务器响应为 200,没有任何错误。像 admin/pages 这样的所有后续路由都可以正常工作。

apache 中的文档根目录设置为项目的根目录,而不是公共文件夹内。我在根目录中使用以下 .htaccess 文件。

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

    RewriteEngine On

    RewriteCond %{REQUEST_FILENAME} -d [OR]
    RewriteCond %{REQUEST_FILENAME} -f
    RewriteRule ^ ^$1 [N]

    RewriteCond %{REQUEST_URI} (\.\w+$) [NC]
    RewriteRule ^(.*)$ public/$1

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ server.php

</IfModule>

我希望 /admin 路由显示仪表板视图,但我得到一个空白页面。如果没有错误,问题可能出在哪里?

标签: phplaravelroutes

解决方案


像这样构建您的路线列表是否有帮助?

    Route::group(
        [
            'domain' => '{account}.app.test',
            'prefix' => 'admin', // This is the URL prefix
            'as' => 'admin.', // This gets pre-pended to the route names.
            'middleware' => 'auth:admin',
            'namespace' => 'Admin'
        ],
        function () {
            Route::get('/', 'DashboardController@index')->name('dashboard'); // with 'as' property, this becomes 'admin.dashboard'
            Route::resource('pages', 'PageController')->except(['show']);
        }
    );

推荐阅读