我创建了一个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}/$0/ [P,NC]
</IfModule>
基本上,我的RewriteMap将查看进入的域,将其与数据库中的条目匹配,并返回类似“用户/用户ID”的内容。
例如,这将在地址栏中显示传入域,但显示在http://exampledomain.com/user/userid/返回的内容
现在,由于某种原因,我收到了301重定向到http://exampledomain.com/user/userid/的信息-没有代理。可能是什么原因造成的?
答案 0 :(得分:0)
欢迎,是因为我打开了输出缓冲。从Apache文档中:
将其关闭,现在可以使用了。
这显然不能解决问题。不知道为什么它看起来可行,而现在却不可行。如果其他人有任何建议,我会接受。
好的,这次我删除了斜杠,它似乎可以工作:
RewriteRule ^.*$ http://exampledomain.com/%{ENV:MAPTO}/$0 [P,NC]
我想知道传入的域是否没有目录或文件名,它以双斜杠结尾,这导致页面重定向。