使用可选参数和正则表达式进行路由

时间:2019-06-12 11:52:43

标签: php regex laravel routing

我将使用单个路由来路由此网址:

  • www.web.com/some.xml
  • www.web.com/some1.xml
  • www.web.com/some2.xml

我尝试使用以下代码,找到URL www.web.com/some1.xml、some2.xml等,但是URL www.web.com/some。 xml 总是未找到

Route::get('/{postTypeSlug}{index?}{xml?}', [
    'as' => 'root_sitemap_post_detail',
    'uses' => 'SingledomainSitemapController@sitemapPostDetail'
    ])->where('postTypeSlug', "(info-sehat|rubrik)\B")->where('index', "([1-9]|[1-9][0-9]+)\b");

我希望可以找到URL www.web.com/some.xml和some1.xml,some2.xml等。

1 个答案:

答案 0 :(得分:0)

我没有测试它,但是您可能想使用*而不是 +

 a* 0 or more
 a+ 1 or more
 a? 0 or 1

对于[1-9]|[1-9][0-9]+,您可能只需要使用[1-9]*|[1-9][0-9]*