我在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
答案 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]