【问题标题】:Getting issue in codeigniter URL routes.php在 codeigniter URL routes.php 中遇到问题
【发布时间】:2018-12-30 20:28:29
【问题描述】:

我正在做一个项目,我需要为每个产品创建干净的 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

 

它工作正常,但现在我无法打开 Products 页面,当我尝试打开它时,它打开 Single_Product_Page

请帮我解决这个问题。

【问题讨论】:

    标签: php codeigniter routes


    【解决方案1】:

    您需要更新类似于此示例的路线(在我的网站上可以正常工作):

    $route['products'] = 'controller/myfunction/argument';
    $route['products/:any'] = 'controller/myfunction/another_argument/$1/1';
    

    您可以从文档here获得更多见解

    【讨论】:

    • 我不想要像 example.com/Products/Single_Product_Page 这样的 URL,但我需要像 example.com/Single_Product_Page 这样的干净 URL。
    • 这不是很标准,如果您的所有产品都显示在 single_product_page 中(而不是“single_product_page/redshirt”和“single_product_page/greenshirt”;无论如何您可以通过加载来实现这一点) ajax 内容到该页面
    【解决方案2】:

    您可以使用一些技巧来仅使用您的控制器名称(这当然是必须的),但无需编写方法名称并直接在控制器名称之后传递您的参数,因此您的 url 基本上看起来像这样: http://localhost/controller/parameter 这会给你提供更短的网址,但不像你声称的那样对 SEO 友好。

    您可以在控制器中使用_remap 并检查它是否与正常处理的方法匹配或将其传递给您的索引(这是您的默认方法,不必写在您的网址中)......现在您不需要按照您的意愿在您的网址中使用索引。

    public function _remap($method)
    {
        if ($method === 'some_method_in_your_controller')
        {
                $this->$method();
        }
        else
        {
                $this->index($method);
        }
    }
    

    或者,您可以依赖 ajax 进行所有的 crud 操作,并且您的 url 几乎一直都是固定的。

    【讨论】:

      猜你喜欢
      • 2018-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-16
      相关资源
      最近更新 更多