Я создал файл index.php в моей общей папке (Laravel), маршрут API в моем route / api.php с URL 'submit'
и методом запроса post
и контроллер с функцией submit()
, которая выполняется при вызове API.
Я попытался проверить маршрут на Почтальоне со следующим URL:
http://mysite.local/api/submit
Это было проверено как POST
запрос, но по какой-то причине он продолжает возвращать файл index.php .
Я даже добавил return "Test";
в начале моей функции submit()
в моем контроллере, чтобы увидеть, была ли проблема с кодом внутри функции (надеюсь, что это имеет смысл, работая с моей терминологией).
Но опять же, когда я тестирую API на почтовом человеке, он все равно возвращает index.php .
Вот мой маршрут и контроллер:
Маршрут / api.php
Route::post('submit', 'SubmitFormController@submit');
// I've also tried the following:
// Route::post('submit', 'App\Http\Controllers\SubmitFormController@submit');
SubmitFormController.php
class SubmitFormController extends Controller {
public function submit() {
return "Test";
/** .. More code below .. **/
}
}
Я даже пытался изменить return "Test";
на return json_encode(['test' => 'testvar']);
, думая, что это поможет. Но Почтальон все еще возвращает index.php .
Я предполагаю, что мой тракт API рассматривается как "каталог", но я могу ошибаться.
ОБНОВЛЕНИЕ: Я заметил еще одну странную (странную для меня) вещь.
Итак, когда я захожу на свой локальный хост, который является mysite.local
, он берет меня к моему index.php
файлу в моей общей папке, что и должно быть. ОДНАКО, когда я затем набираю что-то вроде mysite.local/skjah/asjdklasjd/asjdklasj
(что явно бессмысленно, а не фактический каталог), он перенаправляет на index.php
каждый раз.
Итак, я предполагаю, что, поскольку api\submit
не является каталогом в public
, он просто перенаправляется на index.php
. Но я не уверен, почему, поскольку это работало в прошлом, и мой .htaccess
был нетронут.
Надеюсь, эта информация поможет.
ОБНОВЛЕНИЕ: Просто возился с кодом и заметил, что проблема заключается в моем .htaccess
, как указали некоторые из вас. Вот мой .htaccess
(прямо из коробки, когда я делал проект, не трогал его).
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews -Indexes
</IfModule>
RewriteEngine On
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
Я изменил строку RewriteRule ^ index.php [L]
на RewriteRule ^ index123.php [L]
, чтобы посмотреть, что произойдет, и вызов API для моей функции маршрута больше не работает. Что говорит мне, что это как-то связано с этим файлом.
Это все, что я получил и все еще ищу решение. Надеюсь, это поможет прояснить проблему.