Использование RewriteRule результирующий URL (регулярное выражение) в ProxyPassReverse - PullRequest
0 голосов
/ 25 января 2012

На моем веб-сервере размещено много приложений, путь которых выглядит как

http://example.com/app1/
http://example.com/app2/ ...

Я хотел бы иметь временные ссылки на эти приложения, которые можно легко настроить для истечения срока их действия.Таким образом, я сохранил отображение temp для URL приложения со временем истечения в mysql.В apache я написал правило перезаписи, как показано ниже:

RewriteEngine On
RewriteMap linkmap prg:/home/http/a.php

RewriteCond $1 ^[^/]*$
RewriteRule /(.*) /$1/ [R=301,L]
RewriteRule /(.*) /${linkmap:$1} [P]

a.php отображает временные URL-адреса в реальные URL-адреса с использованием mysql db.Например, temp1 / xyz -> app1 / xyz

Все работает нормально, пока любая страница в app1 не попытается перенаправить на другую страницу.Поскольку я отображаю URL-адреса на основе mysql, я не могу понять, как заставить ProxyPassReference читать из mysql и заменять URL-адреса перенаправления.Я попытался указать правило ProxyPassReference вручную, и оно работает.Но невозможно добавить все правила вручную, поскольку я могу динамически создавать ссылки через некоторый интерфейс, вставляя ссылки на mysql db.

Пожалуйста, помогите мне обработать перенаправления.

1 Ответ

0 голосов
/ 27 марта 2012

Я понял, как это сделать.Таким образом, из rewriterule я получаю целевую карту URL, которую я сохраняю в регулярном выражении.Затем я использовал ProxyPassReverse с флагом интерполяции.

Здесь есть одна проблема.Моя программа для отображения URL в php.Он работает нормально, но если я вижу его через несколько дней, кажется, что программа остановлена, и я получаю сообщение об ошибке сервера, затем необходимо перезагрузить сервер.

...