Я запускаю Laravel и использую php -S 0.0.0.0:80
для запуска моего сервера разработки. В этой ситуации, большинство запросы направляются в мое приложение:Маршрутизация файлов в приложение Laravel
/test
/thisRouteToo
/even/with/subdirectories
Однако если маршрут может быть файл, он пытается загрузить файл вместо:
/css/styles.css
/js/code.js
/this/file/doesnt/exist.txt -- returns a 404
Я хотел бы перенаправить все такие запросы в мое приложение, если файл не существует. Таким образом можно получить доступ к someFile.jpg
, а содержимое JPEG определяется моим приложением.
Я попробовал оба следующих в моем файле .htaccess:
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule^index.php [L]
# Handle Front Controller...
RewriteCond %{REQUEST_FILE} !-d
RewriteCond %{REQUEST_FILE} !-f
RewriteRule^index.php [L]
В обоих случаях я получаю «404 файл не найден» при попытке получить доступ к /someFile.jpg
. Желаемое поведение будет следовать по маршруту в моем приложении, например .:
Route::get('someFile.jpg', function(){ return "Test!"; });
Вы уверены, что активировали '.htaccess' на своем dev-сервере? 'AllowOverride All' в конфигурации apache. Возможно, вам также придется включить mod_rewrite еще не. –
В этом была проблема. Я рассмотрел, как установить 'AllowOverride All' для встроенного веб-сервера PHP (я запускаю сервер с' php -S 0.0.0.0: 80', по первой строке вопроса) и обнаружил, что встроенные PHP-файлы, на веб-сервере полностью игнорируется .htaccess. Он работал только на все это время, потому что у них есть белый список расширений файлов, а неизвестные расширения направляются на index.php. Очевидно, вы можете передать скрипт «router» на сервер вместо .htaccess, который я использовал для проверки существования файла. – stevendesu