besogonskiy
@besogonskiy
работаю php laravel разработчиком.

Можно ли как то через роуты эмитировать выполнение файла php записанного в url?

Вот такой запрос отправляют
lara-1c.local/bitrix/admin/1c_exchange.php из 1с и не важно еще откуда.

Как бы мне сделать при помощи роутов, чтобы этот url воспринимался как роут и если этот запрос приходит чтоб запускалась функция контроллера? никак не могу это реализовать.

Если просто в папке public создаю файл 1c_exchange.php, то этот файл даже можно запустить. но мне так не надо.
Мне надо в функции контроллера поймать все параметры, которые передаются вместе с файлом.
  • Вопрос задан
  • 94 просмотра
Пригласить эксперта
Ответы на вопрос 3
@Kostik_1993
Web Developer
Laravel пофигу что вы напишете в его маршрутах. Такой маршурт будет обработан также как и все остальные
Route::get('/bitrix/admin/1c_exchange.php', function () {
    dd(request()->all());
});


Вам требуется изменить конфиг Nginx, скорее всего у вас в нем прописан вот такой локейшн
location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass app:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
    }


Он вам и отдает 404

Вот что дает гугл на это
Ответ написан
zvermafia
@zvermafia
WebDev
Route::get('/bitrix/admin/1c_exchange.php', [SomeController::class, 'someMethod'])


?
Ответ написан
AmdY
@AmdY
PHP и прочие вебштучки
Надо использовать маску, чтобы фреймворк не разбивал роут по слешам. Ну и не забывайте о безопасности, чтобы совсем уж любой файл нельзя было открыть.
Route::get('{path}', function ($path) {
    require $path; 
})->where('path, '.*'); // маска
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы