Правило Apache для изменения / (косая черта) на _ (подчеркивание) - PullRequest
0 голосов
/ 30 марта 2011

Я установил сервер Apache HTTP с виртуальными хостами перед проприетарным веб-сервером сзади.Внутренний сервер может иметь только один (1) уровень в своих путях идентификаторов, поэтому следующие общедоступные URL-адреса:

http://public-server/path1/path2/path3?querystring-parameters

должны быть преобразованы для внутреннего интерфейса в:

http://internal-server/path1/path2/page/<path1>_<path2>_<path3>?querystring-parameters

Обратите внимание, чтоможет быть любым числом path1, path2, path3, path4, .... и все они должны быть объединены (независимо от того, существует ли 1 или несколько) с подчеркиванием.Также обратите внимание, что параметры строки запроса МОГУТ содержать '?', '/' И '_', поэтому правило не должно каким-либо образом изменять строку запроса.

Я пытался найти решение этой проблемы, но могу 'Не могу понять, как преодолеть проблему.Есть предложения?

1 Ответ

0 голосов
/ 30 марта 2011

Если вы можете найти максимальное количество возможных путей, вы можете сделать что-то для этого:

# This will work for up to 5 paths
RewriteRule /([^/]*)/?([^/]*)/?([^/]*)/?([^/]*)/?([^/]*) http://internal-server%{REQUEST_URI}$1_$2_$3_$4_$5 [L,QSA]

/? ([^ /] *) Можно добавлять в конец столько раз, сколько вам нужно, вместе с добавлением соответствующих групп (_ $ 6 ..) к переписанному URL.

К сожалению, не существует способа иметь совершенно неизвестное количество путей, но в то же время использовать их в переписанном URL. Кроме того, флаг [QSA] прикрепит вашу строку запроса к переадресованному URL, нетронутым.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...