首页 > 解决方案 > 带有可选参数和正则表达式的路由

问题描述

我将使用单个路由路由此 url:

我尝试使用以下代码,找到了网址www.web.com/some1.xml、some2.xml 等,但始终找不到网址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");

我希望可以找到网址 www.web.com/some.xml 和 some1.xml、some2.xml 等。

标签: phpregexlaravelrouting

解决方案


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

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

而对于[1-9]|[1-9][0-9]+你可能只是使用[1-9]*|[1-9][0-9]*


推荐阅读