修改 URL 结构的重写规则

修改 URL 结构的重写规则

我正在尝试创建一个 mod 重写规则来正确更改现有的 url 结构,如下所示:

旧版本:somesite.com/scripts/data/database.cgi?ArticleID=29154&report=SingleArticle&file=Data

变成如下所示的样子:

新内容:somesite.com/oldarticle/id29154.htm

我基本上需要做的就是获取 ArticleID 并将其插入到新的 url 结构中。我想到的办法不起作用,但我知道我已经接近成功了:

RewriteEngine On
RewriteRule ^(.*)/database\.cgi\?ArticleID=([0-9]+)&report=SingleArticle&file=Data$ /oldarticle/id$1.htm [R=301,NC,L] # Permanent Move

我尝试了上述多种方法,但可能在需要重写的初始字符串中遗漏了某些内容。如能提供任何帮助/建议,我将不胜感激!

答案1

查询字符串不是您在 中匹配的字符串的一部分RewriteRule。相反,您需要类似以下内容:

RewriteCond %{QUERY_STRING} report=SingleArticle [NC]
RewriteCond %{QUERY_STRING} file=Data [NC]
RewriteCond %{QUERY_STRING} ArticleID=([0-9]+) [NC]
RewriteRule ^.*/database\.cgi /oldarticle/id%1.htm? [R=301,NC,L]

我分开了条件,以便查询字符串的顺序不是硬编码的,但不确定这对您是否重要。

相关内容