mod_rewrite,将一个带查询的URL更改为完全不同的URL

时间:2012-07-27 16:18:52

标签: mod-rewrite

我正在将数据从一个内容管理系统迁移到另一个内容管理系统。旧URL和新URL之间没有关系,尽管两者都包含查询字符串。我正在尝试设置一个重写集,将大类数据列表从一个重定向到另一个。

以下是一个示例:

OLD rss.php?的categoryID = 53

NEW ?的index.php模块=新闻与类型=用户安培; FUNC =列表&安培; TID = 1&安培;过滤器= blogtopic:当量:19

我试过

RewriteRule ^ rss.php \?categoryID = 53 index.php?module = news& type = user& func = list& tid = 1& filter = blogtopic:eq:19 [L]

但它不匹配。如果我用

跟随那个

RewriteRule ^ rss.php index.php?module = news& type = user& func = list& tid = 1 [L]

如果DOES匹配,那么我得出结论,旧URL中的问号导致了问题。我已经逃脱了问号。我该怎么办?

我可能会在我的.htaccess文件中找到大约50个。

1 个答案:

答案 0 :(得分:0)

您无法在RewriteRule中与查询字符串(之后的所有内容)匹配,您需要使用RewriteCond并匹配` %{QUERY_STRING} var:

RewriteCond %{QUERY_STRING} ^categoryID=53$
RewriteRule ^rss\.php$ /index.php?module=news&type=user&func=list&tid=1&filter=blogtopic:eq:19 [L]

如果要重定向浏览器,请将括号更改为[R=301,L]