Laravel友好的网址,我做得对吗?

时间:2014-02-03 12:34:06

标签: php laravel seo laravel-routing

这是我的路线:

Route::get('location/{id}/{title?}', array('as' => 'scouting_single', 'uses' => 'ScoutingController@get_single')); 

课程很简单:

public function get_single($id, $title ='') { 
    $location = new Location; 
    if(is_numeric($id)) { 
        $location = $location->find($id);
        if(isset($location)) {
            $author = User::find($location->author);                
            $meta = $location->find($id)->metakeywords;

            if($title == '') { 
                $slug = Str::slug($location->title); 
                return Redirect::to('location/'.$id.'/'.$slug);
            }


            return View::make('scoutingviews.view')->with('pagetitle', 'Location view')
                ->with('location', Location::find($id))
                ->with('author', $author)
                ->with('meta', $meta);  
        } else { 
            return Redirect::to('/')->with('message', 'That record is not available'); 
        }               
    } else { 
        return Redirect::to('404');
    }
}

一切似乎工作得很好但是在搜索之后似乎其他人正在做不同的事情,比如将slug保存到db,但我只想将id包含在url中......并使其成为可选项以包含标题slug 。如果用户移除了slug,它将使用slug重定向用户。

我还在学习laravel所以请原谅关于seo-friendlyliness的新手问题,我只是不希望/ {id} /和/ {id} / {title}算作重复

1 个答案:

答案 0 :(得分:0)

如果您担心SEO,那么在数据库中使用URL slug是可行的方法。在URL中使用ID对搜索引擎或用户没有多大帮助。这也应该简化您的代码。除此之外,您还应该查看可以将用户附加到位置的Eloquent relationships。而不是

$author = User::find($location->author);

你可以

$author = $location->author;

关系将是用户hasMany位置和位置belongsTo用户。这也假设用户可以拥有多个位置。