Получение 404 с использованием маршрутов Laravel - переписать не работает

Я использую структуру Laravel-5 и создал следующий маршрут в route/web.php:

Route::get('/test', function () {
    return view('test');
});

После перехода к myapp.dev/test я получаю сообщение об ошибке 404:

Объект не найден! Запрошенный URL-адрес не найден на этом сервере. Если вы ввели URL-адрес вручную, проверьте правильность написания и повторите попытку.

Переход к myapp.dev/index.php/test работает нормально. Итак, похоже, rewrite_mod не работает.

Я использую XAMP/Apache, а rewrite_module включен в httpd.conf:

LoadModule rewrite_module modules/mod_rewrite.so

Общая папка моего larvavel содержит файл .htaccess со следующим содержимым:

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

    RewriteEngine On
    #DirectoryIndex index.php

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

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

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

Конфигурация httpd-vhost выглядит следующим образом:

<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot "s:/_dev/myapp/public"
    ServerName myapp.dev
    <Directory "s:/_dev/myapp/public">
        Allow from all
        Require all granted
        #Options Indexes        
    </Directory>    
    ErrorLog "logs/myapp.dev-error.log"
    CustomLog "logs/myapp.dev-access.log" common
</VirtualHost>

Есть идеи, что я пропустил?

Спасибо


person n2k    schedule 18.11.2018    source источник
comment
ты апач перезапускал? Также см.: stackoverflow.com/questions/869092/   -  person adam    schedule 18.11.2018
comment
Да, я перезапустил сервер. К сожалению, я не нашел решения в вашем связанном сообщении.   -  person n2k    schedule 18.11.2018
comment
Это может быть более короткий способ перенести ваш проект на vagrant/Laravel homestead. Вам станет намного легче работать!   -  person Zoli    schedule 19.11.2018
comment
Спасибо за совет. Звучит круто. Я взгляну. Но если у кого-то есть решение моей проблемы, в любом случае было бы здорово :) Потому что я, вероятно, столкнусь с такой проблемой на стороне продуктивного сервера позже.   -  person n2k    schedule 19.11.2018
comment
Вы пытались добавить AllowOverride All внутрь <Directory "s:/_dev/myapp/public"> в конфигурации httpd-vhost? Не забудьте перезагрузить сервер.   -  person Teguh Suryo Santoso    schedule 19.11.2018
comment
Да, я пробовал. Это приведет к ошибке 403 (доступ запрещен). После прочтения статьи, опубликованной в ответ Джоша, я подумал, что это может иметь какое-то отношение к этой проблеме .dev (в новых браузерах можно использовать .dev только с https из-за записи хостов HSTS). Но я также пытался использовать совершенно произвольный TLD. Все еще 403 после AllowOverride All.   -  person n2k    schedule 19.11.2018


Ответы (1)


Я не вижу никаких проблем с нашим кодом, однако это может быть проблема с браузером.

Взгляните на эту статью, в которой рассматриваются изменения в браузерах, вызывающие проблемы с доменами .dev.

https://medium.engineering/use-a-dev-domain-not-anymore-95219778e6fd

person Josh    schedule 18.11.2018
comment
Спасибо за ваш отзыв. Очень интересная статья. Но, к сожалению, это не моя проблема (пока нет ;)). После прочтения этой статьи я попытался использовать совершенно произвольный gTLD. Я также попробовал его в нескольких браузерах, включая Chrome, Firefox, IE, Vivaldi (Chromium). Та же проблема. - person n2k; 19.11.2018