And*_*rei 5 php mod-rewrite png css3 rgba
我正在使用一个PHP脚本,它动态生成透明的PNG,用作来自查询字符串的CSS背景,该字符串采用RGBa和HSLa值.原始脚本可以在这里找到,我只添加了HSLa支持.
因为带有PHP查询字符串的后台URL不是很漂亮,并且因为它似乎打破了IE 6透明的PNG hack,我想到使用mod_rewrite来允许在调用带有此语法的.png时调用脚本:
/assets/colors/h[0-360 value]_s[0-100 value]_l[0-100 value]_a[0-100 value].png
Run Code Online (Sandbox Code Playgroud)
这将改写为:
/assets/colors.php?h=[0-360 value]&s=[0-100 value]&l=[0-100 value]&a=[0-100 value]
Run Code Online (Sandbox Code Playgroud)
这是我遇到的问题:
我知道这可以通过传递单个变量然后在PHP脚本中进行爆炸来完成,但我更希望它由Apache完成.
在此先感谢,如果有人想要我的HSLa启用版本的脚本,请询问.无论如何,我建议你在作者的网站上查看.
mod_rewrite 将匹配大括号 () 中的内容,然后您可以按照匹配的顺序将它们称为 $1、$2 等。因此,您可以使用它来提取多个变量,只需将它们放在大括号内即可。
所以这样的事情对你有用,
RewriteRule ^assets/colors/h([0-9]{1,3})_s([0-9]{1,3})_l([0-9]{1,3})_a([0-9]{1,3}).png assets/colors.php?h=$1&s=$2&l=$3&a=$4
Run Code Online (Sandbox Code Playgroud)
([0-9]{1,3})将匹配连续数字 0-9 中的 1、2 或 3 个。所以“3”、“10”和“100”等。但它也会匹配“999”,因此您需要确保colors.php文件检查值是否在预期范围内,等等。