我想知道如何在Laravel中创建URL,没有任何前缀。
例如:
如何转换以下网址:
http://www.example.com/posts/some-post
到此网址:
http://www.example.com/some-post
我知道这可以这样做:
Route::any('/{slug}', function($slug) {
$page = App\Models\Page::firstByAttributes(['slug' => $slug]);
if($page) {
return Redirect::action('pagesController@find', array($page));
}
})->where('slug', '.*');
但是对于上面的代码,我要为每个URL保留所有独特的slu ..
其他任何方法都可以吗?
感谢。
答案 0 :(得分:1)
如果您想使用Laravel:
<强>路线强>
Route::get('posts/{slug}', function($slug) {
// Does a 302 redirect, and the route below will handle it
return redirect($slug);
});
Route::get('{slug}', 'pagesController@find');
<强>控制器强>
public function find($slug) {
$page = App\Models\Page::where('slug', $slug);
// ... your code
// ...
// return view('something', ['page' => $page]);
}
答案 1 :(得分:0)
在您点击应用程序层之前,您可以使用Apache重写规则轻松完成您描述的重定向,这应该更加高效。例如,假设Apache设置为允许来自.htaccess的重定向,则以下内容应该足够了:
RewriteEngine On
RewriteRule ^posts/(.*) /$1 [R=301, L]
R=301
表示重定向应该使用301
http响应代码,这将保留您的网页排名等。