Heim >Backend-Entwicklung >PHP-Tutorial >Laravel 路由如何大小写不区分

Laravel 路由如何大小写不区分

WBOY
WBOYOriginal
2016-06-06 20:44:382377Durchsuche

<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));
}

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn