Настройка Laravel .1 htaccess

#php #apache #.htaccess #laravel

#php #apache #.htaccess #laravel

Вопрос:

Я установил Laravel 5.1 и пытаюсь настроить его на общем хостинге. Я добавил index.php файл в корне проекта и файл .htaccess в общей папке, но все равно получаю:

500 Internal server Error

Я запустил: composer install .

Я добавил в .env файл конфигурацию базы данных.

У моей папки проекта есть имя cms .

Затем я попытался изменить .htaccess file public directory вот так:

 <IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On
    RewriteBase /cms/

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)/$ /$1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]

    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</IfModule>  

Мой .htaccess file в project root :

 <IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
       # Options -MultiViews
    </IfModule>

    RewriteEngine On
     RewriteBase /cms/
#    RewriteBase /home/crewjobe/public_html/
    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)/$ /$1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]

    # Handle Authorization Header
#    RewriteCond %{HTTP:Authorization} .
#    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

</IfModule>  

У меня есть index.php файл как в корневом каталоге проекта, так и в общедоступном каталоге.
Index.php в общедоступном каталоге устанавливается из laravel.
Index.php файл в корне проекта — это:

 <?php

/**
 * Laravel - A PHP Framework For Web Artisans
 *
 * @package  Laravel
 * @author   Taylor Otwell <taylorotwell@gmail.com>
 */

$uri = urldecode(
    parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH)
);

//This file allows us to emulate Apache's "mod_rewrite" functionality from the
// built-in PHP web server. This provides a convenient way to test a Laravel
// application without having installed a "real" web server software here.
if ($uri !== '/' amp;amp; file_exists(__DIR__.' /public'.$uri)) {
    return false;
}

require_once __DIR__.' /public/index.php';  

Где я ошибаюсь? Существует ли стандартный способ настройки при новой установке Laravel? Спасибо.

Комментарии:

1. Я никогда не видел вложенных IF в .htaccess.. не уверен, что это проблема, но это выглядит странно. Предлагаю переместить это за пределы блока `if mod_rewrite’ <IfModule mod_rewrite.c> <IfModule mod_negotiation.c> # Параметры -MultiViews </IfModule>

2. Это создается с помощью установки laravel таким образом.. Я немного изменил другую часть

3. Откуда вы знаете, с чем связана проблема .htaccess ? Ошибка 500 предполагает некоторую ошибку PHP. У вас есть error.log каталоги на вашем public или public_html на общем хосте? Кроме того, добавьте ini_set('display_errors', 1); error_reporting(-1); в index.php и проверьте, есть ли у вас подробная ошибка

4. Я проверил журнал ошибок сервера, и там есть сообщение: «»/path/to/cms1″ доступен для записи группой» и «клиент запрещен конфигурацией сервера: /path/to/public_html/domain_name/.htaccess»

Ответ №1:

Спасибо, @milz, после того, как я проверил журнал ошибок сервера и нашел эти сообщения:

path/to/project/folder/ is writeable by group

и в поисках проблемы я нашел это решение: Решение

Я изменил права доступа к папке проекта 0644 , а также к папке project / public, и теперь все в порядке.