我想要做的是,如果我有重复的名称路由,我只使用一条路线而不是使用3条路线,但我不确定我需要使用哪个正则表达式,任何建议?
现在我有了这个
product_test_1.html
product_test_2.html
product_test_3.html
我的codeigniter路线
$route['product_test_1.html'] = "website/product";
$route['product_test_2.html'] = "website/product";
$route['product_test_3.html'] = "website/product";
我想要的东西(但它不起作用)
$route['/product_test/i'] = "website/product";
任何想法都能解决我的问题? 感谢
答案 0 :(得分:3)
试试这个:
$route['product_test_[0-9]+\.html'] = 'website/product';
这是具体的,你可以得到。 [0-9]
表示任何数字(也可以是\d
),+
表示前面一个或多个数字(数字)。
如果您想捕获任何内容,.
令牌是“任意字符”,因此您可以将[0-9]+
替换为.+
,这意味着它将匹配一串(漂亮)很多)任何1或更长的角色。
这会为同一页面创建重复的网址,这通常是不可取的,但也许您特别希望这样。如果没有,您可以通过.htaccess
考虑301重定向。
如果您正在使用此功能,也可以使用此功能将ID传递给该功能。
$route['product_test_([0-9]+)\.html'] = 'website/product/$1';
括号会捕获数字,然后我们将其传递给$1
的网址,因为这是第一次捕获的捕获匹配。
然后,在您website
控制器中,您可以声明您的product
方法:
function product($id)
$id
将自动成为我们从product_test_#.html