【发布时间】:2020-11-25 20:33:40
【问题描述】:
我正在从 IIS 迁移到 Apache(在 Windows 上)并努力适应重写规则(在 IIS 中使用 Helicon ISAPI_Rewrite 3)。
该规则将看起来像目录结构路径的内容映射回一组查询字符串参数。路径中可以有任意数量的参数。
例如
/basket/param1/value1/param2/value2/param3/value3 ...等等...
变成……
/basket?param1=value1¶m2=value2¶m3=value3 ...等等...
ISAPI_Rewrite 中的规则:
# This rule simply reverts parameters that appear as folders back to standard parameters
# e.g. /search-results/search-value/red/results/10 becomes /search-results?search-value=red&results=10
RewriteRule ^/(.*?)/([^/]*)/([^/]*)(/.+)? /$1$4?$2=$3 [NC,LP,QSA]
我首先发现 Apache 没有 'LP' 标志,因此将其换成 N=10 作为循环测试...
RewriteRule ^(.*?)/([^/]*)/([^/]*)(/.+)? $1$4?$2=$3 [NC,N=10,QSA]
但是,Apache 错误日志显示一遍又一遍地添加相同的参数,直到达到 N 标志上的循环数,以 HTTP 500 错误结束。
有什么想法我哪里出错了吗?!?
【问题讨论】:
标签: regex apache mod-rewrite url-rewriting isapi-rewrite