我有两个相互交织的问题需要解决。
我的图库网站由一个名为 ImageFolio 的 PERL 脚本程序驱动,该程序于 2005 年购买。该程序允许按类别或通过搜索关键字显示照片,然后提供与整个内容相匹配的缩略图页面类别,或具有与搜索词匹配的关键字或图像标题的图像。单击缩略图显示动态生成的页面,显示图像的较大 View 。
由于可以从多个搜索中显示相同的图像,因此通过使用 RegEx 表达式在动态生成页面的 HEAD 部分指定一个规范页面非常重要从动态 URL 中捕获相关变量信息,以在每个页面的 HEAD 部分创建和指定 link rel="canonical" 标记。 .htaccess 文件中需要相应的 MOD_REWRITE 语句来将这些静态规范链接转换回结构正确的动态链接以提供正确的内容。
一些典型的动态生成的 URL 和首选的静态 URL 替代品是:
指向显示该类别缩略图页面的“类别”的直接链接
动态: www.artminds.com/cgi-bin/ImageFolio4/imageFolio.cgi?direct=Athletics_and_Sports
期望的静态规范: www.artminds.com/stock-photos/Athletics-and-Sports
MOD_REWRITE:同上dynamic
通过点击图像页面上的可点击关键字来搜索图像
动态: www.artminds.com/cgi-bin/ImageFolio4/imageFolio.cgi?img=0&search=six%20pack&cat=all&bool=phrase
所需的静态规范: www.artminds.com/photo-search/six-pack.html
MOD_REWRITE:/cgi-bin/ImageFolio4/imageFolio.cgi?search=six+pack
通过在搜索框中键入关键字来搜索图像
动态: www.artminds.com/cgi-bin/ImageFolio4/imageFolio.cgi?search=six+pack&bool=and&cat=&x=0&y=0
所需静态规范: www.artminds.com/six-pack.html
MOD_REWRITE:/cgi-bin/ImageFolio4/imageFolio.cgi?search=six+pack
通过单击缩略图显示单个图像页面
动态: www.artminds.com/cgi-bin/ImageFolio4/imageFolio.cgi?action=view&link=On_Location&image=103_8310.jpg&img=0&search=six%20pack&cat=all&tt=&bool=and
所需静态规范: www.artminds.com/103_8310/Muscular-young-man-posing-shirtless-with-cowboy-hat-and-blue-jeans.html
MOD_REWRITE:/cgi-bin/ImageFolio4/imageFolio.cgi?action=view&link=On_Location&image=103_8310
注意: 上面 DESIRED CANONICAL 中的长文件名来自图像显示页面的 HTML 标题标签中显示的图像标题,通过脚本中的变量检索提取图像文件中嵌入的元数据的程序。动态 URL 中的其他变量揭示了被单击的缩略图显示的来源,即直接链接到类别,或基于搜索关键字,以及搜索是否仅限于一个类别以及搜索是否被解释为和/或/phrase 但不需要从所有其他 html 页面中具体识别该图像显示页面
在上面的动态示例中,虽然可能有多个变量,但通常只有一个是相关的并且需要捕获以转换为静态 URL 以及在 Mod_rewrite 中将静态 URL 转换为动态 URL,如图所示在上面的 MOD_REWRITE 示例中。
非常感谢任何帮助。
谢谢,
艺术头脑
加利福尼亚州帕萨迪纳
最佳答案
感谢@ruakh,我通过发布问题的更简单版本解决了这个问题。下面是捕获以下三种形式中任何一种静态 URL 的一部分并将其作为参数传递给执行搜索的 CGI 脚本的解决方案:
http://www.artminds.com/photo-search/outdoors
http://www.artminds.com/photo-search/outdoors/
` http://www.artminds.com/photo-search/outdoors.html
RewriteRule ^photo-search\/([^/]+?)(/|\.html|)$ http://www.artminds.com/cgi-bin/ImageFolio4/imageFolio.cgi\?search=$1&bool\=all [R]
关于RegEx 和 Mod_rewrite 将动态 URL 转换为静态 URL,将静态 URL 转换为动态 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16645456/
我的目标是转换表单输入,例如“100兆字节”或“1GB”,并将其转换为我可以存储在数据库中的文件大小(以千字节为单位)。目前,我有这个:defquota_convert@regex=/([0-9]+)(.*)s/@sizes=%w{kilobytemegabytegigabyte}m=self.quota.match(@regex)if@sizes.include?m[2]eval("self.quota=#{m[1]}.#{m[2]}")endend这有效,但前提是输入是倍数(“gigabytes”,而不是“gigabyte”)并且由于使用了eval看起来疯狂不安全。所以,功能正常,
我想将html转换为纯文本。不过,我不想只删除标签,我想智能地保留尽可能多的格式。为插入换行符标签,检测段落并格式化它们等。输入非常简单,通常是格式良好的html(不是整个文档,只是一堆内容,通常没有anchor或图像)。我可以将几个正则表达式放在一起,让我达到80%,但我认为可能有一些现有的解决方案更智能。 最佳答案 首先,不要尝试为此使用正则表达式。很有可能你会想出一个脆弱/脆弱的解决方案,它会随着HTML的变化而崩溃,或者很难管理和维护。您可以使用Nokogiri快速解析HTML并提取文本:require'nokogiri'h
我需要读入一个包含数字列表的文件。此代码读取文件并将其放入二维数组中。现在我需要获取数组中所有数字的平均值,但我需要将数组的内容更改为int。有什么想法可以将to_i方法放在哪里吗?ClassTerraindefinitializefile_name@input=IO.readlines(file_name)#readinfile@size=@input[0].to_i@land=[@size]x=1whilex 最佳答案 只需将数组映射为整数:@land边注如果你想得到一条线的平均值,你可以这样做:values=@input[x]
这道题是thisquestion的逆题.给定一个散列,每个键都有一个数组,例如{[:a,:b,:c]=>1,[:a,:b,:d]=>2,[:a,:e]=>3,[:f]=>4,}将其转换为嵌套哈希的最佳方法是什么{:a=>{:b=>{:c=>1,:d=>2},:e=>3,},:f=>4,} 最佳答案 这是一个迭代的解决方案,递归的解决方案留给读者作为练习:defconvert(h={})ret={}h.eachdo|k,v|node=retk[0..-2].each{|x|node[x]||={};node=node[x]}node[
从给定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
我正在使用Rails构建一个简单的聊天应用程序。当用户输入url时,我希望将其输出为html链接(即“url”)。我想知道在Ruby中是否有任何库或众所周知的方法可以做到这一点。如果没有,我有一些不错的正则表达式示例代码可以使用... 最佳答案 查看auto_linkRails提供的辅助方法。这会将所有URL和电子邮件地址变成可点击的链接(htmlanchor标记)。这是文档中的代码示例。auto_link("Gotohttp://www.rubyonrails.organdsayhellotodavid@loudthinking.
我正在使用RubyonRails3.0.9,我想生成一个传递一些自定义参数的link_toURL。也就是说,有一个articles_path(www.my_web_site_name.com/articles)我想生成如下内容:link_to'Samplelinktitle',...#HereIshouldimplementthecode#=>'http://www.my_web_site_name.com/articles?param1=value1¶m2=value2&...我如何编写link_to语句“alàRubyonRailsWay”以实现该目的?如果我想通过传递一些
我收到格式为的回复#我需要将其转换为哈希值(针对活跃商家)。目前我正在遍历变量并执行此操作:response.instance_variables.eachdo|r|my_hash.merge!(r.to_s.delete("@").intern=>response.instance_eval(r.to_s.delete("@")))end这有效,它将生成{:first="charlie",:last=>"kelly"},但它似乎有点hacky和不稳定。有更好的方法吗?编辑:我刚刚意识到我可以使用instance_variable_get作为该等式的第二部分,但这仍然是主要问题。
我正在编写一个简单的静态Rack应用程序。查看下面的config.ru代码:useRack::Static,:urls=>["/elements","/img","/pages","/users","/css","/js"],:root=>"archive"map'/'dorunProc.new{|env|[200,{'Content-Type'=>'text/html','Cache-Control'=>'public,max-age=6400'},File.open('archive/splash.html',File::RDONLY)]}endmap'/pages/search.