@zzmaster

Поможите разобраться с роутами Laravel 5.8?

Мне достался проект на Laravel 5.8 судя по composer.json
"laravel/framework": "5.8.*",

В htaccess есть редирект всего на public/
RewriteRule ^(.*)$ public/$1 [L]

Видимо это требует сам Ларавел (я не копенгаген) ибо без этого в корне домена показывается листинг файлов.

Проблема в том, что существуют урлы
/public/profile/id
они работают, хотя в роутах нет public

Auth::routes([
    'register' => false,
    'verify' => false,
    'reset' => false
]);
Route::get('logout', 'Auth\LoginController@logout')->name('logout');

$middleware = [];
if (config('app.auth_required')) {
    $middleware = ['auth'];
}

Route::middleware($middleware)->group(function($route) {
    // Public routes
    $route->get('/', 'IndexController@render')->name('index');
    $route->get('/profile/{id}', 'ProfileController@render')->name('profile')->where('id', '[0-9]+');
    $route->get('/contacts', 'ContactsController@render')->name('contacts');
    $route->post('/contacts', 'ContactsController@sendmail');
    $route->get('/about', 'AboutController@render')->name('about');
});


Почему урлы с /public открываются - я не понимаю. Дальше, на этих урлах, например
/public/profile/111
выводятся друзья юзера
href="{{route('profile', ['id' => $friend->id])}}"

при этом урл френда так же выводится с префиксам public, тогда, как на урле без префикса, который так же работает - френды так же оказываются без /public.

Не понимаю, почему так происходит. Далее, возникла задача избавиться от префикса профилей. Через htaccess я бы сделал это так
RewriteRule ^public/profile/(.+) /profile/$1 [R=302,L]

Однако, это конфликтует с
RewriteRule ^(.*)$ public/$1 [L]

без которой, как уже говорил - выводится список файлов в корне.

Что делать?
  • Вопрос задан
  • 38 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы