我正在一个项目中,我需要为每个产品创建干净的URL,请参见以下模式:-
example.com/Single_Product_Page
原始URL为 example.com/browse/Single_Product_Page ,我使用了以下代码:-
$route['(:any)'] = 'Products/browse/$1';
我有两页(1)example.com/Product
和(2)example.com/Products/Single_Product_Page
它运行正常,但是现在我无法打开产品页,当我尝试打开它时,它会打开 Single_Product_Page
请帮助我解决此问题。
答案 0 :(得分:1)
您需要更新与该示例类似的路由(在我的网站上可以正常运行):
$route['products'] = 'controller/myfunction/argument';
$route['products/:any'] = 'controller/myfunction/another_argument/$1/1';
您可以从文档here
中获得更多见识答案 1 :(得分:0)
您可以使用一些技巧来仅使用您的控制器名称(当然这是必须的),但无需编写方法名称并在控制器名称之后直接传递参数,因此基本上您的url看起来像这样: http://localhost/controller/parameter
,这样可以缩短您的网址,但不能达到您声称的SEO友好性。
您可以在控制器中使用_remap
并检查它是否与正常处理的方法匹配或将其传递给索引(这是默认方法,无需在url中编写)。现在您无需按预期在网址中使用索引。
public function _remap($method)
{
if ($method === 'some_method_in_your_controller')
{
$this->$method();
}
else
{
$this->index($method);
}
}
或者您可以依靠ajax来完成所有的操作,并且您的URL一直都是固定的。