Mod Rewrite Question - 将参数转发到新参数名称

时间:2009-02-11 18:16:42

标签: apache mod-rewrite lamp wamp mamp

我在MAMP上测试了以下Mod Rewrite,但由于某种原因,它在LAMP上失败了。我知道我做错了什么?

RewriteEngine on
RewriteCond %{QUERY_STRING} ^newParamA=(.*)&newParamB=([0-9]*)$
RewriteRule ^newfolder/newsubfolder/$ oldfolder/oldsubfolder\.php?oldParamC=%1\&oldParamD=%2 [QSA,L]

这个想法是一个诸如

之类的查询
http://domain.com/newfolder/newsubfolder/?newParamA=query&newParamB=111

将成功映射到:

http://domain.com/oldfolder/oldsubfolder/?oldParamC=query&oldParamD=111

2 个答案:

答案 0 :(得分:0)

回答Gumbo的评论(你使用相同的配置)

是的 - 最新版本的Apache,启用了mod_rewrite - 似乎它不喜欢RewriteCond - 如果我发表评论,至少路径重定向有效。当我取消注释RewriteCond时,我收到“Not found”错误。

答案 1 :(得分:0)

我目前不知道是什么原因导致这种行为。但你可以试试其中之一:

RewriteCond %{QUERY_STRING} ^newParamA=([^&]*)&newParamB=([0-9]*)$
RewriteRule ^newfolder/newsubfolder/$ oldfolder/oldsubfolder.php?oldParamC=%1&oldParamD=%2 [QSA,L]

RewriteCond %{QUERY_STRING} (^|&)newParamA=([^&]*)&newParamB=([0-9]*)($|&)
RewriteRule ^newfolder/newsubfolder/$ oldfolder/oldsubfolder.php?oldParamC=%2&oldParamD=%3 [QSA,L]

甚至:

RewriteCond %{QUERY_STRING} (^|([^&]*&)*)newParamA=([^&]*)(.*)
RewriteCond %3&%1&%4 ^([^&]*)(&[^&]*)*&newParamB=([0-9]*)
RewriteRule ^newfolder/newsubfolder/$ oldfolder/oldsubfolder.php?oldParamC=%1&oldParamD=%3 [QSA,L]