草庐IT

friendly-url - 将记录 ID 用于动态内容时的友好 URL

coder 2024-02-29 原文

我已经阅读了一些关于友好 url 的内容,但我不确定哪个更好。

我目前的网站使用的结构是 http://www.domain.com/page.php?id=2

我正在使用记录 ID 来确定页面的内容。我的记录 ID 是数字的,并且随着添加的新页面的增加而增加。现有页面的内容可能会随着时间的推移而完全改变。但是,仍然使用相同的记录 ID(这是一个 cms,因此客户端可以这样做)。

根据我的理解,我有两个友好 url 选项:

http://www.domain.com/page/2

http://www.domain.com/some-text-describing-the-page

现在因为我通过记录 ID 识别内容,所以我认为第一个选项更有意义。

我的客户似乎想要选项二。

经过一番阅读,我发现了两个相互矛盾的点。

根据 Tim Berners-Lee(WWW 的架构师),他指出您需要一个 URI,它有可能在 2 个月、2 年、200 年后保持不变。所以你不想为你的页面使用页面标题或类似的东西。如果您更改页面内容,您要么被迫更改内容并单独保留 URI,要么更改 URI 并被悬挂链接卡住。您可以在这里阅读他的文章 ( http://www.w3.org/Provider/Style/URI )

但是,互联网上的许多其他人(对我来说没有权限)明确指出,您需要有一个描述性但简短的 URI 以获得最佳 SEO 值(value)。从我读到的内容来看,主要是为了反向链接和在 anchor 文本中包含关键字,因为人们只是将链接本身用作 anchor 文本。因此,在链接本身中包含关键字有助于搜索引擎在没有自定义标题的情况下了解链接的内容。

在我看来,差异与长期 VS 短期有关。

我是否理解正确?

如果我要使用用户定义的 slug 样式 URI,我是否必须只允许我的用户在字段中输入他们想要的任何内容并检查当前数据库以查看它是否存在?如果是这样,我是否应该通过运行已知记录 id 的查询来预测静态链接,然后使用结果生成 url,该 url 将被重写回格式:http://www.domain.com/page.php?id=2?

在我看来,这会增加很多额外开销。

最佳答案

我会在这两者之间提出一些建议:

http://www.domain.com/page/2/some-text-describing-the-page

或没有页面:

http://www.domain.com/2/some-text-describing-the-page

你仍然可以从 Url 中获取页面 Id,并且还有一个标题!更重要的是,您仍然可以获得正确的内容,即使稍后页面标题发生变化也是如此。

所以想想这样的情况:用户创建一个页面,它收到 Id=4 并且它的标题是 My great title。从该信息生成 Url,例如http://www.domain.com/page/3/my-great-title。 2 个月后,用户将标题更改为 This title is better than the last one!。网址也更改为 http://www.domain.com/page/3/this-title-is-better-then-the-last-one。但是,Url 中仍然有 3,因此您可以显示正确的内容!您还可以检查 Url 的其余部分是否真实,并重定向(最好是 301)到新的 Url 以让搜索引擎知道该 Url 已更改。

关于friendly-url - 将记录 ID 用于动态内容时的友好 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15369153/

有关friendly-url - 将记录 ID 用于动态内容时的友好 URL的更多相关文章

  1. ruby-on-rails - Rails 常用字符串(用于通知和错误信息等) - 2

    大约一年前,我决定确保每个包含非唯一文本的Flash通知都将从模块中的方法中获取文本。我这样做的最初原因是为了避免一遍又一遍地输入相同的字符串。如果我想更改措辞,我可以在一个地方轻松完成,而且一遍又一遍地重复同一件事而出现拼写错误的可能性也会降低。我最终得到的是这样的:moduleMessagesdefformat_error_messages(errors)errors.map{|attribute,message|"Error:#{attribute.to_s.titleize}#{message}."}enddeferror_message_could_not_find(obje

  2. ruby - 将数组的内容转换为 int - 2

    我需要读入一个包含数字列表的文件。此代码读取文件并将其放入二维数组中。现在我需要获取数组中所有数字的平均值,但我需要将数组的内容更改为int。有什么想法可以将to_i方法放在哪里吗?ClassTerraindefinitializefile_name@input=IO.readlines(file_name)#readinfile@size=@input[0].to_i@land=[@size]x=1whilex 最佳答案 只需将数组映射为整数:@land边注如果你想得到一条线的平均值,你可以这样做:values=@input[x]

  3. ruby-on-rails - rails : save file from URL and save it to Amazon S3 - 2

    从给定URL下载文件并立即将其上传到AmazonS3的更直接的方法是什么(+将有关文件的一些信息保存到数据库中,例如名称、大小等)?现在,我既不使用Paperclip,也不使用Carrierwave。谢谢 最佳答案 简单明了:require'open-uri'require's3'amazon=S3::Service.new(access_key_id:'KEY',secret_access_key:'KEY')bucket=amazon.buckets.find('image_storage')url='http://www.ex

  4. ruby - 如何使用 Ruby aws/s3 Gem 生成安全 URL 以从 s3 下载文件 - 2

    我正在编写一个小脚本来定位aws存储桶中的特定文件,并创建一个临时验证的url以发送给同事。(理想情况下,这将创建类似于在控制台上右键单击存储桶中的文件并复制链接地址的结果)。我研究过回形针,它似乎不符合这个标准,但我可能只是不知道它的全部功能。我尝试了以下方法:defauthenticated_url(file_name,bucket)AWS::S3::S3Object.url_for(file_name,bucket,:secure=>true,:expires=>20*60)end产生这种类型的结果:...-1.amazonaws.com/file_path/file.zip.A

  5. ruby - Sinatra:运行 rspec 测试时记录噪音 - 2

    Sinatra新手;我正在运行一些rspec测试,但在日志中收到了一堆不需要的噪音。如何消除日志中过多的噪音?我仔细检查了环境是否设置为:test,这意味着记录器级别应设置为WARN而不是DEBUG。spec_helper:require"./app"require"sinatra"require"rspec"require"rack/test"require"database_cleaner"require"factory_girl"set:environment,:testFactoryGirl.definition_file_paths=%w{./factories./test/

  6. ruby-on-rails - 如何在我的 Rails 应用程序 View 中打印 ruby​​ 变量的内容? - 2

    我是一个Rails初学者,但我想从我的RailsView(html.haml文件)中查看Ruby变量的内容。我试图在ruby​​中打印出变量(认为它会在终端中出现),但没有得到任何结果。有什么建议吗?我知道Rails调试器,但更喜欢使用inspect来打印我的变量。 最佳答案 您可以在View中使用puts方法将信息输出到服务器控制台。您应该能够在View中的任何位置使用Haml执行以下操作:-puts@my_variable.inspect 关于ruby-on-rails-如何在我的R

  7. Ruby Sinatra 配置用于生产和开发 - 2

    我已经在Sinatra上创建了应用程序,它代表了一个简单的API。我想在生产和开发上进行部署。我想在部署时选择,是开发还是生产,一些方法的逻辑应该改变,这取决于部署类型。是否有任何想法,如何完成以及解决此问题的一些示例。例子:我有代码get'/api/test'doreturn"Itisdev"end但是在部署到生产环境之后我想在运行/api/test之后看到ItisPROD如何实现? 最佳答案 根据SinatraDocumentation:EnvironmentscanbesetthroughtheRACK_ENVenvironm

  8. ruby-on-rails - Rails 5 Active Record 记录无效错误 - 2

    我有两个Rails模型,即Invoice和Invoice_details。一个Invoice_details属于Invoice,一个Invoice有多个Invoice_details。我无法使用accepts_nested_attributes_forinInvoice通过Invoice模型保存Invoice_details。我收到以下错误:(0.2ms)BEGIN(0.2ms)ROLLBACKCompleted422UnprocessableEntityin25ms(ActiveRecord:4.0ms)ActiveRecord::RecordInvalid(Validationfa

  9. ruby-on-rails - Ruby url 到 html 链接转换 - 2

    我正在使用Rails构建一个简单的聊天应用程序。当用户输入url时,我希望将其输出为html链接(即“url”)。我想知道在Ruby中是否有任何库或众所周知的方法可以做到这一点。如果没有,我有一些不错的正则表达式示例代码可以使用... 最佳答案 查看auto_linkRails提供的辅助方法。这会将所有URL和电子邮件地址变成可点击的链接(htmlanchor标记)。这是文档中的代码示例。auto_link("Gotohttp://www.rubyonrails.organdsayhellotodavid@loudthinking.

  10. ruby - 查找字符串中的内容类型(数字、日期、时间、字符串等) - 2

    我正在尝试解析一个CSV文件并使用SQL命令自动为其创建一个表。CSV中的第一行给出了列标题。但我需要推断每个列的类型。Ruby中是否有任何函数可以找到每个字段中内容的类型。例如,CSV行:"12012","Test","1233.22","12:21:22","10/10/2009"应该产生像这样的类型['integer','string','float','time','date']谢谢! 最佳答案 require'time'defto_something(str)if(num=Integer(str)rescueFloat(s

随机推荐