1

我已经在 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
4

2 回答 2

0

回答 Gumbo 的评论(您是否使用相同的配置)

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

于 2009-02-11T20:25:37.917 回答
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]
于 2009-02-11T20:40:43.030 回答