RewriteRule - 使用和不使用查询字符串匹配确切的URL

时间:2014-09-09 19:50:39

标签: apache .htaccess mod-rewrite

我有一个旧网址列表,这些网址被映射到其等效的新网址。一些旧的URL包括一些没有的查询字符串。

映射没有设置模式,所以我不能使用任何通配符规则,我需要进行完全匹配。

我一直在尝试这种方法:

RewriteRule ^products/index\.cfm\?pageName=Products/Index$ /test1/ [R=301,QSD,L,NC]
RewriteRule ^products/index\.cfm$ /test2/ [R=301,QSD,L,NC]

但是,如果我转到http://example.com/products/index.cfm?pageName=Products/Index,它会在第二条规则中匹配,并重定向到http://example.com/test2/

谢谢,

JT

1 个答案:

答案 0 :(得分:0)

您无法在重写规则的模式中与查询字符串匹配。您需要匹配%{QUERY_STRING}变量:

RewriteCond %{QUERY_STRING} ^pageName=Products/Index$ [NC]
RewriteRule ^products/index\.cfm$ /test1/ [R=301,L,NC]

RewriteCond %{QUERY_STRING} ^$ [NC]
RewriteRule ^products/index\.cfm$ /test2/ [R=301,L,NC]