我正在尝试创建一个 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]
我分开了条件,以便查询字符串的顺序不是硬编码的,但不确定这对您是否重要。