为什么我的 mod_proxy 标志在 htaccess 中停止工作?

Why did my mod_proxy flag stop working in htaccess?

我创建了一个 RewriteMap 来处理大量域代理。我的重写条件如下所示:

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /
  RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
  RewriteRule ^ - [E=MAPTO:${rewritemap:%1}]
  RewriteCond %{ENV:MAPTO} !=""
  RewriteRule ^.*$ http://exampledomain.com/%{ENV:MAPTO}/[=11=]/ [P,NC]
</IfModule>

基本上,我的 RewriteMap 会查看传入的域,将其与数据库中的条目匹配,然后 return 类似于 "user/userid".

例如,这将在地址栏中显示传入域,但显示 returned at http://exampledomain.com/user/userid/

的内容

现在,出于某种原因,我收到了 301 重定向到 http://exampledomain.com/user/userid/ — 没有代理。可能是什么原因造成的?

好吧,这是因为我打开了输出缓冲。来自 Apache 文档:

Be sure to turn off buffering in your program.

关闭它,现在可以使用了。

更新

这显然没有解决问题。不知道为什么它似乎有效而现在却无效。如果其他人有任何建议,我会采纳。

更新 2

好的,这次我删除了尾部的斜线,它似乎起作用了:

RewriteRule ^.*$ http://exampledomain.com/%{ENV:MAPTO}/[=10=] [P,NC]

我猜如果传入的域没有目录或文件名,它会以双斜线结尾,这会导致页面重定向。