Laravel root route " / " не работает внутри префиксных маршрутов на поддомене

Laravel root route " / " не работает внутри префиксных маршрутов на поддомене

04.09.2019 11:37:08 Просмотров 69 Источник

У меня есть проект со следующими маршрутами:

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

На моем локальном компьютере, когда я открываю приложение.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 покажет вид панели мониторинга, но я получаю пустую страницу. Где могут быть проблемы, когда нет ошибки?

У вопроса есть решение - Посмотреть?

https://stackoverflow.com/questions/57784590/laravel-root-route-doesnt-work-inside-prefixed-routes-on-subdomain#comment102013583_57784590
Вы также тестировали локально с поддоменом?
https://stackoverflow.com/questions/57784590/laravel-root-route-doesnt-work-inside-prefixed-routes-on-subdomain#comment102022007_57784590
Но я этого не сделал. Я использую valet для своей локальной dev-машины с nginx, а на сервере-apache. Но я постараюсь сделать поддомен и протестировать его локально.
https://stackoverflow.com/questions/57784590/laravel-root-route-doesnt-work-inside-prefixed-routes-on-subdomain#comment102034603_57784590
Я создал поддомен на своей локальной машине, и все работает нормально. / admin routes открывается.
https://stackoverflow.com/questions/57784590/laravel-root-route-doesnt-work-inside-prefixed-routes-on-subdomain#comment102070875_57784590
Да. .файл htaccess находится в корне проекта, а не в общей папке. Корень документа сервера был настроен так, чтобы находиться в корне проекта /var/www/html, а не внутри общей папки /var/www/html/public. Вот почему я использую htaccess для перезаписи сервера.РНР

Ответы - Laravel root route " / " не работает внутри префиксных маршрутов на поддомене / Laravel root route "/" doesn't work inside prefixed routes on subdomain

stokoe0990

06.09.2019 02:27:01

Помогает ли вообще построение вашего списка маршрутов таким образом?

    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']);
        }
    );
https://stackoverflow.com/questions/57784590/laravel-root-route-doesnt-work-inside-prefixed-routes-on-subdomain/57821129#comment102073047_57821129
Нет, это ничего не меняло.
DrRoach

06.09.2019 07:34:48

Вы можете сделать это, установив свои домены администратора и пользователя в вашем .envфайл, а затем с помощью Route::domainвот так:

Route::domain(env('APP_ADMIN_URL'))->group(function() {
    Route::get('/', 'AdminController@index');
});

Route::domain(env('APP_USER_URL'))->group(function() {
    Route::get('/', 'UserController@index');
});

Нет необходимости касаться вашего htaccess, кроме как убедиться, что оба ваших домена направляются в ваш общий каталог laravel

Является ответом!
Nicolae

24.12.2019 06:44:44

Я нашел ответ на этот вопрос ;)

Проблема заключалась в том, что у меня была папка admin В моей общей папке, которая была такой же, как маршрут, к которому я пытался получить доступ. Переименование этой папки в случайное имя исправило маршрут my /admin.

Закрыть X