Laravel root route " / " не работает внутри префиксных маршрутов на поддомене
У меня есть проект со следующими маршрутами:
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 покажет вид панели мониторинга, но я получаю пустую страницу. Где могут быть проблемы, когда нет ошибки?





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

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']);
}
);


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
