【问题标题】:Apache RewriteMap with multiple RewriteCond not working具有多个 RewriteCond 的 Apache RewriteMap 不起作用
【发布时间】:2018-07-17 12:07:27
【问题描述】:

我正在使用 RewriteMap 和一个规则(使用地图)和两个 RedirectCond

RewriteMap  lc int:tolower

RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^(DE|FR|IT|)$ [NC]
RewriteCond %{HTTP:Accept-Language} ^(de|it|fr).*$ [NC]
RewriteRule ^/$ https://${DOMAIN}/${lc:%1}/${lc:%2}/home.html [L,R=302]

但它不起作用。我应该使用 ${lc:%1} 还是 ${lc:$1} ?根据 Apache 文档,我们需要将 $ 用于 RewriteMap% 用于 RewriteCond

【问题讨论】:

  • ${DOMAIN} 是什么?另外,not working 是什么意思?您是直接在 apache 配置文件中还是在 htaccess 中尝试?要回答您的问题,${lc:%1} 是正确的方法,因为 %N 是条件匹配的引用,而 $N 是规则匹配的引用

标签: apache redirect mod-rewrite rewritemap


【解决方案1】:

我想你有 503 内部错误。你应该设置

LogLevel alert rewrite:trace3

在您的虚拟主机配置中(但只有在您具有写入权限的情况下才有可能)。 然后尝试在错误日志中找出问题所在。我不知道解决问题的特定方法,但这种方法是调试规则的好机会。对于某些情况,您可以使用this site 来测试您的规则。希望对您有所帮助。

是的,你是对的。 % 代表 RewriteCond,$ 代表 RewriteRule

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-25
    • 1970-01-01
    • 2015-01-27
    • 1970-01-01
    相关资源
    最近更新 更多