我正在修改一个apache-php应用程序。主要目标是使其在主机之间轻松移植。我将每个与路径相关的设置从.htaccess文件移动到虚拟主机规范,但是能够将配置文件的版本与网站版本相匹配会很不错。
我想到的是vhost配置中定义的两个常量(作为环境变量)。像:
lowVersion
包含与此配置文件兼容的最低版本的应用程序。highVersion
包含最后一次配置文件更改时应用程序的版本。因此,应用程序的中央.htaccess
文件可以检查:
lowVersion
不大于应用程序的版本且highVersion
不低于应用程序所需的最低配置版本。我知道SetEnv,SetEnvIf和Rewrite,但他们似乎不支持比较大于和小于fasshion的数字。
当然,我可以使用一个特殊的系统,如:
...并使用RegEx来比较它们(如果一个包含除了它之外的更大),但必须有更多......专业解决方案。 :)
答案 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
),那么它可能适合您。