【问题标题】:New to Laravel PHP framework. Routes other than "/" doesn't workLaravel PHP 框架的新手。 “/”以外的路由不起作用
【发布时间】:2013-08-31 18:06:24
【问题描述】:

我是 Lavarel 框架的初学者。我知道MVC结构,因为我之前在ASP.net中使用过,但是使用Laravel让我很困惑。

我已经在photozoom 目录中安装了 Laravel:

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

这是我的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

【问题讨论】:

  • 您的.htaccess 中有什么内容?你启用了 mod_rewrite 吗?
  • “启用 mod_rewrite 后,我也必须启用 AllowOverride”是什么意思。 ?能详细点吗?

标签: php laravel http-status-code-404


【解决方案1】:

现在试试http://localhost/photozoom/public/index.php/users。然后启用pretty URLs

【讨论】:

  • 嗯,添加index.php 解决了它。但是我怎样才能启用漂亮的 URL?我启用了mod_rewrite。但不好。我会在问题中添加我的.htacces
  • 我已经连续 3 天试图解决这个问题!你是个传奇!
【解决方案2】:

/public 目录中的 .htaccess 文件启用漂亮的 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 文件夹中复制所有文件并粘贴到您刚刚创建的文件夹中,这就是我的解决方案。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-07-27
        • 1970-01-01
        • 2014-01-05
        • 2019-07-15
        • 2015-06-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多