将用户标题(文本)转换为 URL,用啥代替空格、#、& 和其他字符?
Posted
技术标签:
【中文标题】将用户标题(文本)转换为 URL,用啥代替空格、#、& 和其他字符?【英文标题】:Convert user title (text) to URL, what instead spaces, #, & and other characters?将用户标题(文本)转换为 URL,用什么代替空格、#、& 和其他字符? 【发布时间】:2011-02-25 00:10:18 【问题描述】:我在网站上有一些表格,用户可以在其中添加新页面。我必须生成对 SEO 友好的 URL,并使这些 URL 独一无二。 我可以在 URL 中显示哪些字符,我知道我应该将空格转换为下划线:
" "->"_" 和之前 - 下划线表示其他内容,例如:
"_"->/下划线
从 URL 返回标题很容易。
但在我的特定标题中,可以是键盘上的所有字符,甚至:@#%:"/\';.>
在 URL 中不使用此字符是否有一些禁忌?
重要的是:
-轻松从 URL 生成 URL 和标题(无需查询数据库)
-每个标题都是唯一的,所以 URL 也必须是唯一的
-SEO 友好的 URL
【问题讨论】:
【参考方案1】:你不是要查询数据库来获取内容吗?在这种情况下,只需在同一查询中获取标题字段。
可靠地从 URL 中获取标题的唯一方法是对其进行“URL 编码”(在 php 中,您使用 urlencode()
函数)。但是,您最终会得到这样的 URL:
My%20page%20title
您不能替换任何字符,因为这样您就没有唯一的 URL。例如,如果您将空格替换为下划线,则以下标题都将生成相同的 URL:
My page title
My_page title
My_page_title
简而言之:不必担心额外的数据库命中,只需使用对 SEO 友好的 URL,限制为小写 a-z、0-9 和破折号,例如 my-page-title
。就像我说的那样,无论如何,您都可以在一个查询中获取所有内容。
【讨论】:
是的,但是我在插入记录(我们必须生成唯一的 url)和表中的附加列时会遇到更多问题。我可以先将 undescores 转换为例如“(.)”,然后将空格转换为 undescores,所以这不是问题。 但链接将是:example.com/page_sdf(.)sdf 所以我认为它对 SEO 不友好。但是当我浏览***页面时,我可以看到很多这样的链接,例如:pl.wikipedia.org/wiki/A* 或pl.wikipedia.org/wiki/%22Ad_leones!%22 重要的是,我的网站中的普通链接(没有下划线和其他奇怪字符)会少得多。 如果您将下划线转换为其他内容,您仍然会遇到同样的问题。也许它很少会发生,但如果有人在他们的标题中包含“(.)”,它仍然是可能的。 还要创建唯一的 URL,为什么不使用 Stack Overflow 之类的解决方案并在 URL 中包含唯一 ID?这也将加快数据库查询,因为您只是通过 ID 查找,而不是长文本字符串。以上是关于将用户标题(文本)转换为 URL,用啥代替空格、#、& 和其他字符?的主要内容,如果未能解决你的问题,请参考以下文章