'路由器' - 如何使它正确?

gro*_*gor 0 php mysql routes foreign-keys url-routing

我想问你路由器的最佳解决方案.

我的数据库(文章,页面,类别等)中有一些表都有ID.我想为每个人生成特定的URL,例如./en/article/25-This-is-an-test-article.

但如何摆脱的/条,/页,...?用户不希望看到它 - 它只是增加了网址的长度......

我的第一个想法是简单的路由器表:

CREATE TABLE `router` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `type` varchar(50) NOT NULL,
  `entity_id` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB;
Run Code Online (Sandbox Code Playgroud)

但是有一个致命的问题 - 不可能为enitity_id列设置外键,因为它应该引用更多列,这在SQL中是不可能的.

我的问题是:你认为我应该坚持使用该解决方案(并忽略外键)或者我应该忘记它并在URL中附加类型?

Lig*_*ica 5

我想/en/article/55-something成为/en/55-something- 以最好的表现,以最好和最干净的方式(问题是在哪里以及如何保存信息,55-something是一篇文章,而不是页面)

这些信息的最佳位置就在URL中,因此您不必使用脆弱的,最佳猜测的查找.

简短回答:你已经做得很好了.