Apache 的 mod_rewrite 混合了外部重写程序的重写

Apache 的 mod_rewrite 混合了外部重写程序的重写

我使用以下配置:

RewriteEngine On
RewriteMap url-rewrite prg:/usr/bin/url-rewrite
RewriteRule ^(.*)$ ${url-rewrite:%{HTTP_HOST}$1} [P]

但有时重写的 URL 会出现混淆:

127.0.0.1 - - [30/Jun/2011:15:12:37 +0300]   
[localhost...] [...] (5) map lookup OK:
map=url-rewrite key=localhost/1.gif ->
val=http://127.0.0.1:8080/path/2.gif

url-rewrite 脚本仅添加路径段,但不更改文件的名称。我预期 val=http://127.0.0.1:8080/path/1.gif.这导致用户实际上获取了错误的图像文件。

注意:如果您想获得如上所述的详细调试日志(影响性能),请使用:

RewriteLog /path/to/file.log
RewriteLogLevel 9

答案1

看来 url-rewrite 脚本有错,你应该发布这个脚本代码。

但在此之前请检查您是否已设置RewriteLock指令,使用 apache 时prg:需要同步锁,以免混淆结果。

相关内容