Apache中的配置版本检查

时间:2011-09-02 07:35:36

标签: apache .htaccess

我正在修改一个apache-php应用程序。主要目标是使其在主机之间轻松移植。我将每个与路径相关的设置从.htaccess文件移动到虚拟主机规范,但是能够将配置文件的版本与网站版本相匹配会很不错。

我想到的是vhost配置中定义的两个常量(作为环境变量)。像:

  • lowVersion包含与此配置文件兼容的最低版本的应用程序。
  • highVersion包含最后一次配置文件更改时应用程序的版本。

因此,应用程序的中央.htaccess文件可以检查:

  • 如果lowVersion不大于应用程序的版本且
  • 如果highVersion不低于应用程序所需的最低配置版本。

我知道SetEnv,SetEnvIf和Rewrite,但他们似乎不支持比较大于和小于fasshion的数字。

当然,我可以使用一个特殊的系统,如:

  • 3 = iii
  • 4 = iiii

...并使用RegEx来比较它们(如果一个包含除了它之外的更大),但必须有更多......专业解决方案。 :)

1 个答案:

答案 0 :(得分:1)

Apache的 mod_rewrite 可以像id > 1234那样进行比较 - 它将作为字符串比较完成(词典编排先于按字典顺序跟随)。

现实生活中的例子

任务:/198655.html这样的网页。需要对数量介于152600和153655之间的所有页面执行301重定向到/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),那么它可能适合您。