【问题标题】:Mod Rewrite Question - forwarding parameters to new parameter namesMod Rewrite Question - 将参数转发到新参数名称
【发布时间】:2010-10-06 23:43:31
【问题描述】:

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

【问题讨论】:

  • 你使用的是同一个配置吗?

标签: apache mod-rewrite lamp wamp mamp


【解决方案1】:

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

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

【讨论】:

  • 是的 - 一切正常。如果我注释掉 rewritecond,newfolder/newsubfolder 映射到 oldfolder/oldsubfolder 我只需要映射参数,但它似乎不像 rewriteCond
【解决方案2】:

我目前不知道是什么导致了这种行为。但您可以尝试以下方法之一:

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]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-24
    • 2017-02-19
    相关资源
    最近更新 更多