Почему мой флаг mod_proxy перестал работать в htaccess? - PullRequest
0 голосов
/ 02 мая 2019

Я создал 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 будет проверять входящий домен, сопоставлять его с записью в базе данных и возвращать что-то вроде "user / userid".

Это, например, будет отображать входящий домен в адресной строке, но отображать содержимое, возвращаемое в http://exampledomain.com/user/userid/

Теперь по какой-то причине я получаю перенаправление 301 на http://exampledomain.com/user/userid/ - без прокси. Что может быть причиной этого?

1 Ответ

0 голосов
/ 02 мая 2019

Welp, это потому, что я включил буферизацию вывода .Из документации Apache:

Обязательно отключите буферизацию в своей программе.

Выключил и теперь он работает.

Обновление

Это, по-видимому, не решило проблему.Не уверен, почему это сработало, а сейчас нет.Если у кого-то есть какие-либо предложения, я их приму.

Обновление 2

Хорошо, на этот раз я удалил косую черту, и похоже, что она работает:

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

Я предполагаю, что если входящий домен не имел каталогов или имен файлов, он закрывался двойной косой чертой, и это вызывало перенаправление страницы.

...