Проверка версии конфигурации в Apache - PullRequest
0 голосов
/ 02 сентября 2011

Я обновляю приложение apache-php.Основная цель - сделать его легко переносимым между хостами.Я переместил каждый параметр, зависящий от пути, из файлов .htaccess в спецификацию virtualhost, но было бы неплохо иметь возможность сопоставить версию файла конфигурации с версией сайта.

Я подумал о двух константах, определенных в конфиге vhost (как переменные среды).Например:

  • lowVersion с самой низкой версией приложения, с которым совместим этот файл конфигурации.
  • highVersion с версией приложения, когда произошло последнее изменение файла конфигурации.

Таким образом, центральный файл .htaccess приложения может проверить:

  • , если lowVersion не больше версии приложения и
  • если highVersion не ниже минимальной версии конфигурации, необходимой приложению.

Я знаю о SetEnv, SetEnvIf и Rewrite, но они не поддерживают сравнение чисел в болеечем и меньше чем фассион.

Конечно, я мог бы использовать специальную систему счисления, такую ​​как:

  • 3 = iii
  • 4 = iiii
  • etc

... и используйте RegEx для их сравнения (если одно содержит другое, а не большее), но должно быть еще какое-то ... профессиональное решение.:)

1 Ответ

1 голос
/ 03 сентября 2011

Apache mod_rewrite может выполнять сравнение подобно id > 1234 - это будет сделано как сравнение строк, хотя ( лексикографически предшествует , а лексикографически следует ).

Пример из реальной жизни

Задание: Существуют страницы типа /198655.html. Необходимо выполнить перенаправление 301 для всех страниц с номерами от 152600 до 153655 в подпапку /us/ и все остальные в подпапку /en/.

Код: http://pastebin.com/Jp7n8mdp

RewriteCond $1 >152600
RewriteCond $1 <153655
RewriteRule ^(\d+)\.html$ http://www.example.com/us/$1.html [R=301,L]
RewriteRule ^(\d+)\.html$ http://www.example.com/en/$1.html [R=301,L]

ВЫ МОЖЕТЕ сделать сравнение чисел - оно не идеально, и число должно быть соответственно отформатировано ... но это возможно в простых случаях. Если вы можете сделать свои числа простыми (например, сравнивая 04 < 11, а не 4 < 11), тогда это может сработать для вас.

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