首页 > 解决方案 > Laravel 路由映射问题:无法将 url 映射到控制器方法

问题描述

我有一个由 apache 提供服务的 laravel 项目,位于 apache 根文件夹中,可通过 http://hostname/foo 访问,我无法将 url 映射到控制器方法。以下是带有方法的控制器(为便于说明而简化)。

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;

class ShowController extends Controller
{
    public function show($id)
    {
        return 'show: ' . $id;
    }
}

以下是routes/web.php中的路由映射

Route::get('show/{id}', 'ShowController@show');

问题是像下面这样的网址不起作用。

http://hostname/foo/show/1

上面的 url 把我带到了 phpinfo()。但是以下网址给出了预期的结果。

http://hostname/foo/public/show/1

以下映射也不起作用。

Route::get('/show/{id}', 'ShowController@show'); // with a leading slash
Route::get('show/{id}', 'ShowController@show')->name('show');
Route::get('/show/{id}', 'ShowController@show')->name('show'); // with a leading slash

我感谢任何信息或建议。谢谢。我的php是7.1。

标签: phplaravel

解决方案


Laravel 的这个入口点永远是/public.

您可以在此处找到如何配置 Apache:
如何配置 apache Web 服务器以部署 laravel 5


推荐阅读