Плагин Cake PHP / img / diectory выбрасывает недостающий метод вместо 404 - PullRequest
1 голос
/ 16 июля 2009

У меня есть плагин Cake PHP, который я написал. Плагин имеет свой собственный контроллер, так что он может обслуживать некоторый динамический код на странице индекса плагина (/ keyedit / или /keyedit/index).

Когда изображения запрашиваются из / keyedit / img /, они обрабатываются должным образом. Но если изображение не существует, Cake думает, что / img / является методом в keyedit_controller.php и выдает ошибку отсутствующего метода. Это было бы не так плохо, но оно также удаляет куки-файл сессии, ломая все остальное.

Как я могу сказать Cake просто возвращать 404, когда файлы отсутствуют в / img / вместо того, чтобы попадать в код контроллера?

Полагаю, я мог бы добавить метод img (), который просто возвращает 404, но это похоже на пометку. (ETA: пробовал, все равно удаляет cookie сессии)

Ответы [ 2 ]

2 голосов
/ 16 июля 2009

Возможно, у вас отладка> 0 в app / config / core.php. Если отладка равна 0, отсутствующий метод совпадает с 404.

Вы также можете создать app / app_error.php для изменения поведения ошибок.

1 голос
/ 16 июля 2009

Cake использует файл .htaccess , чтобы переписать оригинальные красивые URL-адреса во что-то, что может использовать Cake, например:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]

Эти строки гарантируют, что URL будет передан Cake (переписав его), только если это не тот файл, который вы запрашиваете. Однако, если файл отсутствует, эти правила, очевидно, не применяются, поэтому он с радостью передаст его и Cake.

Что вы можете сделать, это добавить условие для исключения любых каталогов, которые знают, не нуждаются в Cake. Э.Г.

RewriteCond %{REQUEST_URI} !^/(keyedit/img|other_folder)/

Кроме того, вы можете исключить файлы на основе их расширений, например:

RewriteCond %{REQUEST_URI} !\.(js|ico|gif|jpg|png|css)$

Или вы можете редактировать регулярное выражение в самом RewriteRule, чтобы исключить определенные каталоги или расширения файлов ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...