Файлы корневых папок Silex не могут получить доступ из URL - PullRequest
0 голосов
/ 26 июня 2018

У меня есть сайт, использующий Silex.

Я загрузил несколько файлов в корневую папку, например robots.txt и несколько push-уведомлений sdk.

Проблема в том, что я получаю ошибку, когда пытаюсь получить доступ к этому файлу с помощью URL: domain.com/robots.txt выдает ошибку при попытке доступа из браузеров Chrome

Маршрут не найден для GET /robot.txt

Неустранимая ошибка: необработанное исключение 'Symfony \ Component \ Routing \ Exception \ RouteNotFoundException' с сообщение "Невозможно сгенерировать URL для названного маршрута" "как такой маршрут не существует.' в /home/path/domain.com/vendor/symfony/routing/Symfony/Component/Routing/Generator/UrlGenerator.php:134 Трассировка стека: # 0 /home/path/domain.com/vendor/symfony/twig-bridge/Symfony/Bridge/Twig/Extension/RoutingExtension.php(45): Symfony \ Component \ Routing \ Generator \ UrlGenerator-> generate (NULL, NULL, ложь) # 1 /home/path/domain.com/data/twig/fe/bb/cd3e9843c1ef02ee591d59cfb1afd51eb5cd52af42e38573c035f7ef4128.php(146): Symfony \ Bridge \ Twig \ Extension \ RoutingExtension-> getPath (NULL, NULL) # 2 /home/path/domain.com/vendor/twig/twig/lib/Twig/Template.php(276): __TwigTemplate_febbcd3e9843c1ef02ee591d59cfb1afd51eb5cd52af42e38573c035f7ef4128-doDisplay (Array, Массив) # 3 /home/path/domain.com/vendor/twig/twig/lib/Twig/Template.php(250): Twig_Template-> displayWithErrorHandling (Array, Array) # 4 / home / путь / домен в /home/path/domain.com/vendor/twig/twig/lib/Twig/Template.php на линии 291

1 Ответ

0 голосов
/ 26 июня 2018

Когда вы говорите «корневая папка», вы имеете в виду папку public_html или папку, содержащую такие папки, как «templates» и «src»?

Большая ошибка php после «Не найден маршрут для« GET /robot.txt »» фактически выдается, когда Silex пытается обработать шаблонный документ. Я предполагаю, что шаблоны ошибок в вашей установке Silex установлены неправильно.

Если ваш файл robots.txt находится в общедоступной папке, вам не нужен контроллер Silex для его обслуживания, но вам нужно настроить веб-сервер для обслуживания реальных файлов, прежде чем он попытается передать запрос в index.php .

Здесь приведены примеры конфигов https://silex.symfony.com/index.php/doc/2.0/web_servers.html

Для apache соответствующий бит

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f

Для nginx соответствующий бит равен

try_files $uri /index.php$is_args$args;

Это части конфигурации, которые говорят «проверьте, есть ли файл для этого URL, и используйте index.php, если его нет»

...