2015-04-17 62 views
2

我对重定向的人一起工作,如果他们键入“不是真的错了网址”。如何根据SQL中的字符相似性比较字符串?

比如我有一个很好的URL http://www.website.com/category/foo-bar-if-bar-foo/。 这个工程,所以如果用户用它进入我的网站,我可以检索相应的文章。

但是,如果有人进入我的网站有没有真正错误的URL像http://www.website.com/category/foo-bar-foo/,因为其他网站引用了一个错误的URL,我要他重定向到合适的人,而不是有一个404个状态码...

那么我应该怎么做?最重要的是,我应该这样做吗?

我实际上Laravel 4.2使用侃侃而谈。

预先感谢您。

编辑

我错计算器,感谢您的评论。它使用帖子的唯一ID。

EDIT 2

我在SOUNDEX功能SQL来看,它真的好,如果有喜欢的字符或两个缺少的一个小的差异。但是,如果我的网址和我的例子一样坏了,那么显然它不再工作。但是,谢谢这将是有用的。

+1

这是因为StackOverflow的使用数量('29695569'在你的例子)作为查找一个唯一的标识符,并且不真正关心的URL在所有的文本字符串的一部分....这只是有搜索引擎优化 –

+0

好吧,这是一个点! – KeizerBridge

+2

这里的魔术词是“模糊搜索”。退房'SOUNDEX()'在MySQL功能(https://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_soundex) – prehfeldt

回答

3

只是在想我的头顶部,你可以创建一个包含所有路径的SQL表(使用全文索引启用)(它可能已经存在)。

如果404被触发,劫持并执行MATCH(全文搜索)并返回得分最高的路径MATCH(您也可以考虑使用分数阈值来防止无意义的匹配)。