Laravel 将 .html 附加到路由(并且也可以在没有 .html 的情况下工作)

use*_*259 3 php .htaccess laravel

添加 .html 并使其双向工作的最简单方法是什么?

example.com/about -> 有效!

example.com/about.html -> 有效!

我可以将“.html”添加到路线中,但如果没有,它就无法工作。

Route::get('about.html', function () {
 return 'About page';
});
Run Code Online (Sandbox Code Playgroud)

zor*_*orx 5

试试这个:

Route::get('about{extension}', function() {
    return 'About page';
})->where('extension', '(?:.html)?');
Run Code Online (Sandbox Code Playgroud)

如果您有许多页面需要此模式,您还可以使用 RouteServiceProvider 来捕获扩展(感谢@Mike):

//app/Providers/RouteServiceProvider.php

public function boot(Router $router)
{
  $router->pattern('extension', '(?:.html)?');
  parent::boot($router);
}
Run Code Online (Sandbox Code Playgroud)

然后在你的routes.php中

Route::get('about{extension}', function() {
    return 'About page';
});
Run Code Online (Sandbox Code Playgroud)

  • 您还应该提到,可以在服务提供者中定义正则表达式,这样就不必重复“where”... (2认同)