【问题标题】:CodeIgniter URL routing - SEO friendly URLCodeIgniter URL 路由 - SEO 友好的 URL
【发布时间】:2011-12-24 11:02:59
【问题描述】:

我为我的网站创建了一条新路由:

$route['default_controller'] = "欢迎";

$route['(:any)'] = "欢迎/索引/$1";

$route['404_override'] = '';

当 URL 像这样时,这在我的网站上运行良好:

http://mydomain.com/first-article

http://mydomain.com/second-article

*我的控制器只是welcome.php

但是

我还有一个管理员控制器,管理员的 URL 是:

http://mydomain.com/admin

我将在路由文件中添加什么来忽略 admin 中的 /admin 和其他控制器?

【问题讨论】:

    标签: codeigniter routing seo


    【解决方案1】:

    您可以将welcome/index/$1 路由替换为:

    $route['^(?!admin).*'] = "welcome/index/$1";
    

    这基本上是说,如果一个 not 以“admin”开头的 URI 应该路由到 welcome/index 方法并将内容传递给 index 方法。否则,以管理员为控制器处理正常路由。

    【讨论】:

    • 感谢您的回复,它有效!..但是如果我想再添加一条规则,可以说:如果 URI 不以“admin”和“users”开头,它应该路由到欢迎/索引方法..我该怎么做?
    • 只需将其添加到以竖线字符分隔的路由中:$route['^(?!admin|users).*'] = "welcome/index/$1"; -- 您可以根据需要添加任意数量。
    【解决方案2】:

    打开application/config/router.php并更改

    $route['404_override'] = '';
    

    $route['404_override'] = 'router/index';
    

    所有控制器都可以正常使用。

    当您尝试使用不存在的控制器时,应将其路由到 404 控制器。

    创建一个名为 Router.php 的控制器作为为 CodeIgniter 构建的控制器。

    Router.php内的index方法中,查询相关的sef url,并进行必要的操作。所有路由到未定义控制器的请求都将由 router/index 方法处理。其他的会像往常一样被重定向到相关的控制器。

    您可能希望使用标题代码来指出相关页面不是 404。

    【讨论】:

      猜你喜欢
      • 2012-10-06
      • 1970-01-01
      • 2011-11-21
      • 2016-05-28
      • 2011-04-06
      • 2015-07-30
      • 1970-01-01
      • 2012-01-17
      • 2011-08-25
      相关资源
      最近更新 更多