我正在尝试创build一个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
我已经尝试了上面的许多变体,并且可能在初始string中缺less一些需要重写的东西。 任何帮助/build议将不胜感激!
查询string不是您在RewriteRule匹配的string的一部分。 相反,你需要这样的东西:
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]
我分离的条件,以便查询string的顺序不硬编码,但不知道如果这对你很重要。