> 백엔드 개발 > PHP 튜토리얼 > Laravel 路由如何大小写不区分

Laravel 路由如何大小写不区分

WBOY
풀어 주다: 2016-06-06 20:44:38
원래의
2380명이 탐색했습니다.

<code class="lang-php">//D:/website/zbphp.com/www/Laravel/app/routes.php
Route::group(array('prefix'=>'admin'),function(){

    Route::get('login','admin\HomeController@login');
});
</code>
로그인 후 복사
로그인 후 복사

当网址是 http://localhost/ADMIN/LOGIN/ 报错无法访问
如何大小写不区分

回复内容:

<code class="lang-php">//D:/website/zbphp.com/www/Laravel/app/routes.php
Route::group(array('prefix'=>'admin'),function(){

    Route::get('login','admin\HomeController@login');
});
</code>
로그인 후 복사
로그인 후 복사

当网址是 http://localhost/ADMIN/LOGIN/ 报错无法访问
如何大小写不区分

强制对来路url全部转为小写,在主入口文件 server.php 里面可以操作。

@kankana 牛逼,服!

这个没啥好方法.
要嘛,你定义route使用的是pattern
参考这里 http://stackoverflow.com/questions/21731151/laravel-case-insensitive-routes
要嘛,想ls说的, 转换为小写.
处理这类(route)事情的正确文件是app/filters.php 而不是server.php(更非入口文件).

<code>App::before(function($request)
{
    $fullUrl = $request->fullUrl();
    if(preg_match('@[A-Z]@', $fullUrl))
        return Redirect::to(Str::lower($fullUrl));

});
</code>
로그인 후 복사

还有另一种方法,就是错误出现时,再进行大小写转换
这个得在app/start/global.php

<code>App::error(function(Symfony\Component\HttpKernel\Exception\NotFoundHttpException $exception, $code)
{
    $fullUrl = Request::fullUrl();
    if(preg_match('@[A-Z]@', $fullUrl))
        return Redirect::to(Str::lower($fullUrl));

});
</code>
로그인 후 복사

其实这两种方法都是下下策...

还有,为什么我说server.php不是入口文件呢?

因为这是 PHP's internal web server, 详细情况你可以参考,我就不多说了.

http://stackoverflow.com/questions/16919920/what-is-the-purpose-of-the-server-php-file-in-laravel-4

你要是用的apache/nginx来运行laravel,你必须指向public/index.php,而非server.php. 所以你要是向ls所说,将这些操作直接修改在server.php, 在生产环境中(nginx/apache)是不可能起效的.

对了,artisan serve这个命令就是可以启动 PHP's internal web server, 这时server.php就是入口文件了.

这命令文件Illuminate\Foundation\Console\ServeCommand.php
passthru('"'.PHP_BINARY.'"'." -S {$host}:{$port} -t \"{$public}\" server.php");

extend Router class 重写这个method应该就可以了
protected function addRoute($methods, $uri, $action)
{
return $this->routes->add($this->createRoute($methods, strtolower($uri), $action));
}

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿