Я пытаюсь заставить Laravel работать с сценарием, отличным от Laravel.

Мне нужно, чтобы Laravel обрабатывал только маршруты, заданные в файле web.php, и позволял обрабатывать все, что не определено, моим legacy_index.php, отличным от laravel-PHP.

enter image description here

Это настройки папки, которые у меня есть в публичном доступе. legacy_index.php принадлежит моему сценарию, отличному от laravel-php. В скрипте legacy_index.php есть алгоритм разбора URL. Я хочу, чтобы Laravel разрешил мне использовать legacy_index.php , если путь, к которому я пытаюсь получить доступ, не объявлен в маршрутах, но без отображения файла legacy_index.php в связь.

В качестве примера: Laravel будет обрабатывать эти маршруты:

  • 127.0.0.1:8000/api/getUserData
  • 127.0.0.1:8000/api/getAppointments

Но проигнорирует эти маршруты:

  • 127.0.0.1:8000/mail
  • 127.0.0.1:8000/user-profile

И позволит моему legacy_index.php обрабатывать маршрутизацию для этих двух.

Я попытался отредактировать файл .htaccess, пытаясь перенаправить на эти ссылки из маршрутов, но ничего не сработало.

Кто-нибудь делал это раньше и есть какие-нибудь советы / указатели? Я разрабатываю в Windows, использую Laravel 8.42.

0
Răzvan T. 19 Май 2021 в 18:25

2 ответа

Лучший ответ

Похоже, что ваши маршруты аккуратно идентифицируются простым правилом, что если они начинаются с "/ api", вы хотите, чтобы Laravel index.php обрабатывал их, но если это не так, вы хотите, чтобы legacy_index.php обрабатывал их. Поэтому добавление еще одного правила условной перезаписи в .htaccess может быть одним методом.

...

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} ^/api/(.+)
RewriteRule ^ index.php [L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index_legacy.php [L]
2
Martin Joiner 19 Май 2021 в 15:35

Перенос устаревших веб-приложений на Laravel может быть вам полезным. См. Step Three: Hand Off to Legacy Framework

1
GlennM 19 Май 2021 в 15:29