我可能的重复项:
包含空格和特殊字符的 URL 的最佳做法
正在尝试制作"漂亮"的网址,我想知道人们如何处理空白空间,例如,如果我创建一个带有标题的新论坛线程:
awesome thread title
我想用-
符号替换空格,所以我应该得到类似的东西:
http://website.com/forum/thread/awesome-thread-title
现在它似乎正在工作,但是如果用户写了,我该怎么办
some-title
从数据库获取记录时,这会破坏我的代码,因为我会将-
符号替换为空白空间,而数据库中的行名实际上会-
因此我找不到任何东西。
我可以举更多的例子...
您不应该依赖 url 的标题部分来查找数据库中的元素。在它前面加上一些 ID 并忽略标题。查看您当前在堆栈溢出中查看的页面的 URL...
不要尝试对 slug 进行逆向工程,以搜索数据库中的实际标题。当用户创建新帖子时,从标题("真棒线程标题" -> awesome-thread-title
)形成一个 slug,确保它在数据库中是唯一的,并将其保存在数据库中。
通常,您也可以将"漂亮"的URL片段存储在数据库中,并将其用作唯一索引,因为正如您所注意到的,"美化"是不可逆的。