Проблема с URL-адресом Laravel Cleaner в ubuntu, как это исправить?

#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 как есть.