Мне достался проект на 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]
без которой, как уже говорил - выводится список файлов в корне.
Что делать?