#php #.htaccess #ubuntu #laravel #laravel-4
#php #.htaccess #ubuntu #laravel #laravel-4
Вопрос:
Я использую последнюю версию laravel. Я только что добавил новый маршрут, но он не работает.
Route::get('/about',function()
{
return View::make('about');
});
Когда я набираю localhost/index.php/about, он начинает работать.
Итак, я проверил некоторые статьи, которые они предлагают редактировать .htaccess, и я сделал то же самое.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
но это снова не сработало, поэтому были внесены некоторые изменения в мой конфигурационный файл. Это содержимое моего конфигурационного файла.
<VirtualHost *:80>
ServerName sar.dev
DocumentRoot "/var/www/laravel/public"
<Directory "/var/www/laravel/public">
Options Indexes FollowSymLinks MultiViews
AllowOverride All
</Directory>
</VirtualHost>
Этот метод также не удался. Я работаю над ubuntu 13.10. Есть ли другой способ это исправить?
Комментарии:
1. Вы включили rewrite_module?
2. Убедитесь, что вы активировали rewrite_module или просто переключились на NGINX 🙂
3. Действительно простой способ проверить, включен ли у вас rewrite_module, — это удалить некоторые символы из кода внутри него. Например. изменить
RewriteCond
наMyWrongCond
. Вы должны получить 500 внутренней ошибки сервера.4. Вы также можете попробовать добавить a
/
вindex.php/$1
строку, чтобы она выглядела так:^(.*)$ /index.php/$1
. Я заметил, что это работало для меня в прошлом с некоторыми подобными проблемами.
Ответ №1:
Чтобы продолжить мой комментарий. Я заметил, что вы использовали модифицированный .htaccess
, который не является значением по умолчанию для laravel.
Попробуйте .htaccess
использовать файл laravel по умолчанию со /
следующей index.php
частью.
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ /index.php [L]
</IfModule>
Это решение помогло мне, когда я столкнулся с аналогичной ошибкой, когда сайт не работал при переходе в /route и должен был использовать /index.php/route как есть.