Apache2.4 и Laravel 5.4 с псевдонимом в подпапке не работают без /index.php - PullRequest
0 голосов
/ 08 сентября 2018

Я создал псевдоним в конфигурационном файле сервера apache (/etc/apache2/mods-enabled/alias.conf) для целевой папки.

    Alias /laravel/ "/home/user/dev/web/laravel/public/"

    <Directory "/home/user/dev/web/laravel/public/">
            Options Indexes FollowSymLinks MultiViews ExecCGI
            AllowOverride All
            Require all granted
    </Directory>

Кроме того, я написал следующее.htaccess

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

    RewriteEngine On

    RewriteRule ^(.*)/$ /$1 [L,R=301]

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^/laravel/(.*) /laravel/index.php/$1 [L]

</IfModule>

Теперь, когда я посещаю http://IP/laravel, index.php загружается, как и ожидалось.Но если я собираюсь позвонить в GET Route, как http://IP/laravel/load_examples, я получаю ошибку NOT FOUND.

Вместо этого, если я посещаю http://IP/laravel/index.php/load_examples, маршрут загружается, как и ожидалось.

Мне кажется, что что-то не так с правилами .htaccess и rewrite.

Я перепробовал все, что нашел на SO и в других местах, но пока не нашел решения.

Есть идеи?

1 Ответ

0 голосов
/ 08 сентября 2018

В псевдониме перед показанным блоком кода попробуйте добавить:

DocumentRoot /home/user/dev/web/laravel/public/

А затем попробуйте это для вашего .htaccess:

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

    RewriteEngine On

    # 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]

</IfModule>
...