Php 这个建议的路由器解决方案有什么问题?

Php 这个建议的路由器解决方案有什么问题?,php,database,url,url-routing,Php,Database,Url,Url Routing,我最近在我的网站上发布了一个关于创建虚荣URL的问题,虽然我得到了很多很好的答案,但我很好奇我最初的想法到底出了什么问题: 问题是: 我目前有如下难看的URL: 我想要的是这样优雅的东西: 我建议的解决方案是: 我可以将“alex genadinik”存储在数据库中(而不是MVC控制器)并在查找此人时获取虚荣URL吗。然后我可以重定向到外观优雅的域名 或者重定向会增加技术上的尴尬和僵化程度?也许我根本不需要重定向。我的意思是我将在数据库中而不是服务器中查找内容。我认为这是唯一的区别。想法?:

我最近在我的网站上发布了一个关于创建虚荣URL的问题,虽然我得到了很多很好的答案,但我很好奇我最初的想法到底出了什么问题:

问题是: 我目前有如下难看的URL:

我想要的是这样优雅的东西:

我建议的解决方案是: 我可以将“alex genadinik”存储在数据库中(而不是MVC控制器)并在查找此人时获取虚荣URL吗。然后我可以重定向到外观优雅的域名


或者重定向会增加技术上的尴尬和僵化程度?也许我根本不需要重定向。我的意思是我将在数据库中而不是服务器中查找内容。我认为这是唯一的区别。想法?:)

Drupal实际上做了类似的事情,所有URL别名都存储在数据库中。你想怎么做就怎么做!我会考虑你将有URL的不同类型的“东西”以及如何区分它们,当用户请求URL时你将如何进行查找,你将如何进行反向查找以从实体生成链接,以及如果你需要的话如何处理参数(即/vanity URL?sortby=blah)

您提出的解决方案没有问题。事实上,WordPress可以被配置为完全做到这一点

我将按如下方式实现它(类似于WordPress):

  • 拥有一个.htaccess文件 不存在的文件是 请求,并重写到您的 router.php
  • 让你的router.php 检查是否存在此非存在路径 在数据库中,对照预先计算的虚荣名称列表
  • 如果存在,则显示 相关信息,如未返回 一组404头,用于显示文件或文件名均不存在

  • 您甚至可以通过将捕获的URL设置为
    /users/alex genadinik
    ,然后设置一个
    user\u router.php
    ,它只处理这些请求,并且知道如何正确显示它们,从而使它更友好(更容易查找内容)。然后可能是一个
    events\u router.php
    来处理像
    /events/summer-trek-2011