Новое в структуре Laravel PHP. Маршруты, отличные от "/", не работают

Я начинаю работу в рамках Lavarel. Я знаю о структуре MVC, поскольку я использовал ее раньше в ASP.net, но использование Laravel довольно сбивает меня с толку.

Я установил Laravel внутри каталога photozoom, используя:

composer create-project laravel/laravel photozoom --prefer-dist

Здесь my app/routes.php:

<?php

Route::get('/', function()
{
    return View::make('hello');
});

Route::get('users', function()
{
    return 'users route is working!';
});

Когда я запустил http://localhost/photozoom/public/users, я получаю ошибку 404 Not Found.

Но когда я пытаюсь http://localhost/photozoom/public/, вызывается маршрут для / и вызывается соответствующее представление.

Я даже попытался создать представление для маршрута users. Использование документации Laravel. Я создал два файла:

layout.blade.php:

<html>
    <head>
        <title>Laravel Quickstart</title>
    </head>
    <body>
        <h1>Laravel Quickstart</h1>

        @yield('content')
    </body>
</html>

users.blade.php:

@extends('layout')

@section('content')
    Users!!!
@stop

Но все же, когда я звоню http://localhost/photozoom/public/users, я получаю 404 Not Found error.

Здесь мой public/.htaccess файл:

<IfModule mod_rewrite.c>
    Options -MultiViews
    RewriteEngine On

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

Я использую PHP 5.5, Apache 2.4.6.

Любая помощь будет оценена.


решаемые После включения mod_rewrite мне пришлось включить AllowOverride тоже.

Ответ 1

Попробуйте http://localhost/photozoom/public/index.php/users. А затем включите красивые URL.

Ответ 2

Файл .htaccess в каталоге /public позволяет использовать довольно URL-адреса. Чтобы файл .htaccess выполнял свою работу:

  • Apache2 должен иметь mod_rewrite включен (a2enmod переписать)
  • В вашей конфигурации Apache вы должны использовать опцию AllowOverride для разрешить файлу .htaccess "переопределять" ваш по умолчанию Apache2 конфигурации.

Например:

<Directory /var/www/photozoom/> 
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

Ответ 3

В файле httpd.conf есть два параметра AllowOverride.

<Directory />
    AllowOverride All
    Require all denied
</Directory>

и

DocumentRoot "D:/www"
<Directory "D:/www">
    AllowOverride All
    Require all granted
</Directory>

Ответ 4

если вы используете Windows 10, вам просто нужно сделать что-то простое, как достаточно.

создать новую папку в каталоге c:/wamp64/www/и скопируйте весь файл из папки laravel и вставьте в папку, которую вы только что создали, это мое решение.