Laravel 4 простой маршрут не работает с помощью mod_rewrite и .htaccess
Я не только новичок в Laravel 4, но и новичок в использовании фреймворков. Я думал, что начну с Laravel, так как он получил такие хорошие отзывы.
У меня хорошая установка Laravel. Я перехожу в /l 4/public и вижу страницу приветствия.
Я пытаюсь добавить маршрут к route.php, чтобы при перемещении к /l 4/public/articles я получил ответ.
Я получаю: "Запрошенный URL/l4/public/articles не был найден на этом сервере". Нужно ли мне запускать команду artisan для компиляции маршрутов? Вероятно, это легко. Почему это сообщение?
routes.php
Route::get('/', function()
{
return View::make('hello');
});
Route::get('articles', function ()
{
//return View::make('articles');
return "Articles hello there";
});
Ответы
Ответ 1
Проблема решается двумя изменениями редактирования в файле apache httpd.conf.
AllowOverride None - значение по умолчанию. AllowOverride определяет, обрабатываются ли файлы .htaccess.
mod_rewrite закомментирован по умолчанию.
Изменения:
Изменить 1: активировать mod_rewrite, раскомментировав его.
Изменить 2:
Изменить
AllowOverride None
к
AllowOverride All
Теперь перезапустите Apache...
Файл .htaccess по умолчанию, который Laravel предоставляет в общей папке, указывает некоторые правила mod_rewrite. Эти правила не применялись, поскольку AllowOverride не был установлен. Обязательно перезапустите apache после изменения этих параметров.
Моя конфигурация: Apache 2.4.6 в Windows XP.
По-видимому, могут быть некоторые последствия для безопасности для изменения AllowOverride. Если у кого есть дополнительная информация об этом, я бы хотел его услышать.
Ответ 2
Эта ошибка в основном говорит о том, что маршрутизатор не может найти ваш запрос. Убедитесь, что вы уже сохранили свои изменения.
если вы используете команду artisan для запуска страницы, просто повторно запустите команду "Artisan Serve".
Ответ 3
Вам нужен mod_rewrite. Попробуйте: l4/public/index.php/articles
Ответ 4
в httpd.conf изменить
<Directory />
AllowOverride none
Require all granted
</Directory>
в
<Directory />
AllowOverride all
Require all granted
</Directory>
тогда раскомментируйте
#LoadModule rewrite_module modules/mod_rewrite.so
в
LoadModule rewrite_module modules/mod_rewrite.so