2014-10-26 10 views
1

Я создаю приложение, используя Laravel v.4.2. В каталоге app/public у меня есть папка images, которая содержит статические изображения. Затем я создал ImagesController для пользователей для управления активами. Однако, когда я ввел URL-адрес: myapp.dev/images в браузер, я получил бесконечную ошибку цикла перенаправления. Я дважды проверил все свои маршруты и заметил, что нет связанных с images путей. Даже когда я прокомментировал все записи маршрутов, ошибка все еще существует.Laravel бесконечный цикл

Я нашел работу вокруг этого, переименовав контроллер, однако это не будет идеальным решением.

Что я могу сделать, чтобы полностью справиться с этой ошибкой?

+0

Это звучит странно ... что в вашем '.htaccess' файле? (в общедоступном каталоге) – lukasgeiter

ответ

2

Вам необходимо переименовать либо ваш каталог images, либо ваш маршрут images. Ожидается поведение вашего сервера: когда он попадает в каталог public (где начинается все запросы Laravel), он обнаруживает, что существует папка images, поэтому ваш URL-адрес не перенаправлен на index.php, и ваше приложение не запускается. Поэтому он никогда не добирается до ваших маршрутов.


Причина петли сама зависит от содержимого файла .htaccess, но это, вероятно, происходит потому, что, когда вы запрашиваете myapp.dev/images, сервер распознает, что images является каталогом и немедленно возвращает 301 перенаправления myapp.dev/images/ (с задним числом /). Затем ваш файл .htaccess перескакивает и пытается преобразовать его обратно в myapp.dev/images, без конечной косой черты. Это происходит в строке RewriteRule ^(.*)/$ /$1 [L,R=301].

Обычно, когда вы переходите к папке в app/public, вы должны получить 403 Запрещено Ошибка. Строка, которая делает это, - Options -Indexes, что отключает возможность отображения списка (или индекса) каталогов в браузере. Как правило, индексы отключены по всему серверу, в файле httpd.conf вашего сервера. Вы можете проверить, что это так, или, по крайней мере, добавить Options -Indexes в ваш .htaccess файл в app/public.

Кроме того, убедитесь, что ваш .htaccess файл в app/public содержит как этих строк:

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

, то почему возник бесконечный цикл? – petwho

+0

Возможно, из-за поведения вашего сервера, связанного с вашим '.htaccess' над конечными косыми чертами. Взгляните на отредактированный ответ. – damiani