RegEx和Mod_rewrite将动态URL转换为静态URL,静态转换为动态URL

时间:2013-05-20 08:29:32

标签: regex perl mod-rewrite seo canonical-link

我有两个相互交织的问题要解决。

我的股票摄影网站由2005年购买的名为ImageFolio的PERL脚本程序驱动。该程序允许按类别显示照片,或搜索关键字,然后提供与整个内容相匹配的缩略图图像页面类别,或带有与搜索字词匹配的关键字或图像标题的图像。单击缩略图图像将显示动态生成的页面,其中显示较大的图像视图。

由于可以从多次搜索中显示相同的图像,因此通过使用 RegEx 表达式在动态生成的页面的HEAD部分中指定规范页面非常重要。从动态URL捕获相关变量信息,以在每页的HEAD部分中创建并指定 link rel =“canonical”标记。 .htaccess文件中需要相应的 MOD_REWRITE 语句,以将这些静态规范链接转换回正确结构化的动态链接,以提供适当的内容。

一些典型的动态生成的URL和首选的静态URL替代品是:

直接链接到“类别”,显示该类别的缩略图页面
DYNAMIC: 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

通过在搜索框中输入关键字来搜索图像
DYNAMIC: 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

点击缩略图显示单张图片页
DYNAMIC: www.artminds.com/cgi-bin/ImageFolio4/imageFolio.cgi?action=view&link=On_Location&image=103_8310.jpg&img=0&search=six%20pack&cat =所有&安培; TT =安培; BOOL =和
渴望的静态典范: 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中的其他变量显示所点击的缩略图显示的来源,即直接链接到类别,或基于搜索关键字,以及搜索是否仅限于一个类别以及搜索是否被解释为和/或/词组但不要求从所有其他html页面中明确标识该图像显示页面

在上面的动态示例中,虽然可能存在多个变量,但通常只有一个变量是相关的,需要捕获以转换为静态URL以及Mod_rewrite以将静态转换为动态URL,如图所示在上面的MOD_REWRITE示例中。

非常感谢任何帮助。

谢谢,
艺术思想
帕萨迪纳,加利福尼亚州

2 个答案:

答案 0 :(得分:0)

感谢@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]

答案 1 :(得分:0)

你最后使用了哪些直接链接?

"直接链接到"类别"显示该类别的缩略图页面 DYNAMIC:www.artminds.com/cgi-bin/ImageFolio4/imageFolio.cgi?direct=Athletics_and_Sports 渴望静态典范:www.artminds.com/stock-photos/Athletics-and-Sports MOD_REWRITE:与上面的动态相同"