【问题标题】:Create clean urls and managing duplications创建干净的网址和管理重复
【发布时间】:2010-12-11 16:30:07
【问题描述】:

我正在使用 asp.net mvc c#。根据用户输入,我想保存他们在数据库中输入的文本并使用此文本创建一个 url。也会有一个与此文本相关联的唯一 ID。

创建“干净”网址时应该考虑哪些因素?

还有我应该如何避免重复 - 即每个网址都应该是唯一的, 因此,如果 2 个人输入:“嘿,检查我的酷 URL!”

我可能想要http://www.mysite.com/links/hey-check-my-cool-url/ 之类的东西

我如何确保它们始终是唯一的?如果两次输入相同的描述,我该怎么办?

【问题讨论】:

  • 我对 ASP 一无所知,但您可以使用 GUID 插入,因此不会重复。或者只是检查用户输入的内容是否已经在数据库中。

标签: c# sql asp.net-mvc


【解决方案1】:

大多数人最终会得到一些不同的 loannis karadimas 解决方案。但是,我倾向于使用的两种方案是:

http:///www.mysite.com/links/xxx/hey-check-my-cool-url

这是因为它表明 xxx 数字不是链接标题的一部分(取决于您在做什么)。

http:///www.mysite.com/links/hey-check-my-cool-url-xxx
http:///www.mysite.com/links/hey-check-my-cool-url/xxx

基本上将 xxx 数字放在末尾,因为出于 SEO 目的(如果您关心的话),更接近 URL 根的词更有可能对页面排名具有更高的优先级。当然,就像大多数其他 SEO 技巧一样,请谨慎行事!

PS,我对 ASP 了解不多。

【讨论】:

  • xxx 可以是 GUID。我更喜欢:http:///www.mysite.com/links/xxx/hey-check-my-cool-url
【解决方案2】:

您可以根据您的要求预先添加一个小的(随机)序列或强制用户输入不同的短语(我更喜欢第一个):

http:///www.mysite.com/links/xxx-hey-check-my-cool-url/

我会只考虑字母和数字,通过使用简单的正则表达式作为白名单方法来删除其他所有内容,即:

[^\w\d]{1,}

此表达式应匹配所有非字母数字。

【讨论】:

    猜你喜欢
    • 2012-10-21
    • 2016-04-25
    • 2018-10-18
    • 2011-06-25
    • 2013-06-06
    • 1970-01-01
    • 1970-01-01
    • 2012-02-29
    • 1970-01-01
    相关资源
    最近更新 更多