如果您就如何将参数合并到 SEO 友好 URL 中提出建议,我将不胜感激
我们决定首先使用“技术人员”参数,然后是“SEO Slug”
\product\ABC123\fly-your-own-helicopter
很像S.O. - 如果 SEO Slug 发生变化、被截断或丢失,我们仍然有 Product 和 ABC123 参数;许多文章都说拥有此类额外数据不会损害 SEO 排名。
我们需要有额外的参数;我们可以使用“-”来分隔参数,因为它使它们看起来类似于 SEO Slug,或者我们可以/应该使用其他东西?
\product\ABC123-BOYTOY-2\boys\toys\fly-your-own-helicopter
这是产品=ABC123,在类别=BOYTOY 和页面=2 中。
我们也希望尽可能保持层次结构的扁平化,因此我认为:
\product-ABC123-BOYTOY-2\boys\toys\fly-your-own-helicopter
会更好——少一级。
我们有许多“区域”,例如
\product-ABC123\seo-slug-for-product
\category-BOYTOY\seo-slug-for-category
\article-54321\条款和条件
如果我们可以只使用我们的 5 位数页面 ID 号,那将对我们有很大帮助,所以这些将变成
\12345-ABC123\seo-slug-for-product
\23456-BOYTOY\seo-slug-for-category
\54321\条款和条件
(产品和类别对于不同的模板有许多不同的页面 ID,这种样式会直接将我们带到正确的页面)
如果您能深入了解使用哪些参数分隔符,以及领先的技术数据是否适合我们,我将不胜感激。
相关情况:
IIS7+MSSQL2008上的经典ASP应用 产品和类别代码仅包含 A-Z、0-9、“_”。
最佳答案
就我个人而言,我不认为有以下任何一种情况:
\12345-ABC123\seo-slug-for-product
\product-ABC123-BOYTOY-2\boys\toys\fly-your-own-helicopter
特别“友好”。它们对于 SEO 可能“没问题”,但您可能会失去在 url 开头的编码中的友好部分。
为什么你不能有这样的东西:
\product\seo-slug-for-product
然后有一个表或字典将 slug 映射到产品 ID。这样,当您的 MVC Controller 接收到 slug 作为参数时,它可以查找所有其他值。
最坏的情况,我会这样做。这更像是:
\product\123456\seo-slug-for-product
数字是产品 ID。我认为他们这样做是为了让文章的标题可以更改,而旧的 URL 仍然有效。这就是为什么:
和
工作。他们使用:
<link rel="canonical"
href="https://stackoverflow.com/questions/3023298/seo-friendly-url-rewriter-parameters">
确保谷歌只索引一个页面。
关于SEO 友好的 URL 重写器参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3023298/
exe应该在我打开页面时运行。异步进程需要运行。有什么方法可以在ruby中使用两个参数异步运行exe吗?我已经尝试过ruby命令-system()、exec()但它正在等待过程完成。我需要用参数启动exe,无需等待进程完成是否有任何rubygems会支持我的问题? 最佳答案 您可以使用Process.spawn和Process.wait2:pid=Process.spawn'your.exe','--option'#Later...pid,status=Process.wait2pid您的程序将作为解释器的子进程执行。除
我有一些Ruby代码,如下所示:Something.createdo|x|x.foo=barend我想编写一个测试,它使用double代替block参数x,这样我就可以调用:x_double.should_receive(:foo).with("whatever").这可能吗? 最佳答案 specify'something'dox=doublex.should_receive(:foo=).with("whatever")Something.should_receive(:create).and_yield(x)#callthere
从给定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
我正在编写一个小脚本来定位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
我正在为一个项目制作一个简单的shell,我希望像在Bash中一样解析参数字符串。foobar"helloworld"fooz应该变成:["foo","bar","helloworld","fooz"]等等。到目前为止,我一直在使用CSV::parse_line,将列分隔符设置为""和.compact输出。问题是我现在必须选择是要支持单引号还是双引号。CSV不支持超过一个分隔符。Python有一个名为shlex的模块:>>>shlex.split("Test'helloworld'foo")['Test','helloworld','foo']>>>shlex.split('Test"
我不确定传递给方法的对象的类型是否正确。我可能会将一个字符串传递给一个只能处理整数的函数。某种运行时保证怎么样?我看不到比以下更好的选择:defsomeFixNumMangler(input)raise"wrongtype:integerrequired"unlessinput.class==FixNumother_stuffend有更好的选择吗? 最佳答案 使用Kernel#Integer在使用之前转换输入的方法。当无法以任何合理的方式将输入转换为整数时,它将引发ArgumentError。defmy_method(number)
两者都可以defsetup(options={})options.reverse_merge:size=>25,:velocity=>10end和defsetup(options={}){:size=>25,:velocity=>10}.merge(options)end在方法的参数中分配默认值。问题是:哪个更好?您更愿意使用哪一个?在性能、代码可读性或其他方面有什么不同吗?编辑:我无意中添加了bang(!)...并不是要询问nobang方法与bang方法之间的区别 最佳答案 我倾向于使用reverse_merge方法:option
我有一个只接受一个参数的方法:defmy_method(number)end如果使用number调用方法,我该如何引发错误??通常,我如何定义方法参数的条件?比如我想在调用的时候报错:my_method(1) 最佳答案 您可以添加guard在函数的开头,如果参数无效则引发异常。例如:defmy_method(number)failArgumentError,"Inputshouldbegreaterthanorequalto2"ifnumbereputse.messageend#=>Inputshouldbegreaterthano
我正在使用Rails构建一个简单的聊天应用程序。当用户输入url时,我希望将其输出为html链接(即“url”)。我想知道在Ruby中是否有任何库或众所周知的方法可以做到这一点。如果没有,我有一些不错的正则表达式示例代码可以使用... 最佳答案 查看auto_linkRails提供的辅助方法。这会将所有URL和电子邮件地址变成可点击的链接(htmlanchor标记)。这是文档中的代码示例。auto_link("Gotohttp://www.rubyonrails.organdsayhellotodavid@loudthinking.
我没有找到太多关于如何执行此操作的信息,尽管有很多关于如何使用像这样的redirect_to将参数传递给重定向的建议:action=>'something',:controller=>'something'在我的应用程序中,我在路由文件中有以下内容match'profile'=>'User#show'我的表演Action是这样的defshow@user=User.find(params[:user])@title=@user.first_nameend重定向发生在同一个用户Controller中,就像这样defregister@title="Registration"@user=Use