【问题标题】:Fat Free PHP SEO Friendly URLsFat Free PHP SEO 友好的 URL
【发布时间】:2014-10-18 18:35:59
【问题描述】:

我正在考虑将 F3 用于我的更多项目。我喜欢路由功能和生成动态路由以用于以下约定的能力:

$f3->route('GET /@controller/@action', '@controller->@action');

我需要的一件事是对 seo 友好的 URL,所以我可以执行以下操作:

/two-words/two-more-words 

作为控制器/动作组合。我已经在代码中进行了尝试,并尽我所能搜索了有关如何完成此操作的示例,但到目前为止,我一直没有成功。基本上,url 中的破折号不会解析为路由中的类/方法(控制器/动作)组合。

有没有办法做到这一点,以便将破折号替换为空字符或其他方式来解析路由?

【问题讨论】:

    标签: php seo fat-free-framework


    【解决方案1】:

    如果你真的想要这样,你可以使用 lambda 函数:

    f3->route('GET /@controller/@action', function($f3,$params){
      $class = str_replace('-','',$params['controller']);
      $method= str_replace('-','',$params['action']);
      $f3->call( $class.'->'.$method );
    });
    

    【讨论】:

    • 这正是我一直在寻找的,一种将 SEO URL 转换为类/方法名的钩子。很好,谢谢!不过,你为什么说“如果你真的想要那样的话?”这种做法有什么问题吗?小写、连字符分隔的 URL 是我们标准的一部分。
    • 我认为这种方法的唯一缺点是我们的团队不喜欢你可以从几个不同的组合中获取一个 URL,例如两个字控制器/动作、两个字rd-control-trol-ler/action 都将解析为相同的 URL。如果没有办法解决这个问题,那就没有办法了。
    • no.. 没有任何问题 ;) 也许这只是个人感觉,可能会暴露所有控制器和方法。我喜欢它更严格,并且定义的单一路线比适合所有人的路线更多:)
    • 你可以分解- 字符上的控制器和动作参数,并将其部分的第一个字符设为大写。这样你就可以为类和方法建立驼峰命名法,这解决了你对导致同一动作的多条路线的担忧
    • @ikez,我不完全确定我会以这种方式使用它。我几乎 100% 使用了一个名为 LightVC 的框架,我想看看 F3 与 LVC 有什么相似之处。我也是一名专业的 .net 开发人员,所以我也想看看我们在 .net MVC 中所做的一些事情是否可以转化为 F3。最后,我也可能会使用单路由设置,但我确实担心会变得笨拙,以及当涉及到具有大量路由的站点时可能会出现性能问题。我现在是 F3 的婴儿,所以这就是我,正在探索。谢谢!
    猜你喜欢
    • 2016-04-13
    • 2011-05-09
    • 2018-05-22
    • 2012-08-21
    • 2011-08-25
    • 1970-01-01
    • 2014-05-19
    • 1970-01-01
    相关资源
    最近更新 更多