是否可以在路径文件中重写Laravel 5中的路由

时间:2015-04-20 12:39:02

标签: routes rewrite laravel-5

是否可以在Laravel 5的routes.php文件而不是我的.htaccess文件中执行URL重写?我知道重定向很容易,但我最好避免这样做,以便在地址栏中保留短网址。

说我有网址' http://website.com/store/clothing/shites/cool-shirt'将使用该路线:

Route::get('store/{category}/{subcategory}/{product}', [
    'uses'=>'StoreController@getProduct'
]);

我想创建一个快捷方式网址' http://website.com/cool-shirt'这将从数据库表中获取完整的URL,然后调用正确的路由和参数(没有重定向)。

Route::get('{slug}', function($slug){

    $shortcut = \App\Shortcut::whereSlug($slug)->first();

    // I'm making the execute_route() function up here
    return execute_route($shortcut->full_url);

})

基本上在路线中呼叫路线。

这可能吗?

1 个答案:

答案 0 :(得分:0)

我理解你想要实现的目标,而不是试图在当前路径中调用另一个路由,我建议你只使用一个路由来处理请求,在控制器中处理数据库查询并显示和返回一个基于的视图目前的slu or还是扔了404。

像这样:

Route::get('/{slug?}',array(
    'uses' => 'ShortcutController@getSlug',
    'as'   => 'shortcut.getSlug'
));



<?php namespace App\Http\Controllers;

use \View;
use App\Shortcut;


class ShortcutController extends Controller {


    public function getSlug($slug=null){
        if(!$shortcut = Shortcut::whereSlug($slug)->first()) abort(404);
        return view('slug')
            ->with('shortcut',         $shortcut);

    }

}

NB:上面的路线应该是您的routes.php上的最后一个列表,否则其他一些路线可能会匹配