htaccess变量变量

时间:2012-08-07 08:36:08

标签: php .htaccess

我已经创建了一个构建图像的php脚本,我想使用htaccess获取一个漂亮的URL

该脚本根据一些变量构建图像:

例如:

All options given
php url:  image.php?width=300&height=400&color=red&var1=something&var2=somethingelse
nice url: image-w300-h400-cred-v1something-v2something.png

Few options given
php url:  image.php?var1=something&color=black
nice url: image-v1something-cblack.png

我知道如何为每个组合构建一个rewriteRule但是没有办法实现自动化吗?

2 个答案:

答案 0 :(得分:4)

可能是最简单的解决方案:

RewriteRule ^image-(.+)\.png$ image.php?params=$1

然后在PHP中解析$_GET['params']

答案 1 :(得分:1)

如果你总是把你的参数放在同一个顺序中,你可以使用这种规则:

RewriteRule 
    ^image(-w[0-9]+)?(-h[0-9]+)?(-c[a-z]+)?(-v1[A-Za-z0-9-]+)?(-v2[A-Za-z0-9-]+)?\.png$ 
    image.php?width=$1&height=$2&color=$3&var1=$4&var2=$5 [L]

编辑:

RewriteRule 
    ^image(-w([0-9]+))?(-h([0-9]+))?(-c([a-z]+))?(-v1([A-Za-z0-9-]+))?(-v2([A-Za-z0-9-]+))?\.png$ 
    image.php?width=$2&height=$4&color=$6&var1=$8&var2=$10 [L]

编辑2以防止10美元的问题:

RewriteRule 
    ^image(?:-w([0-9]+))?(?:-h([0-9]+))?(?:-c([a-z]+))?(?:-v1([A-Za-z0-9-]+))?(?:-v2([A-Za-z0-9-]+))?\.png$ 
    image.php?width=$1&height=$2&color=$3&var1=$4&var2=$5 [L]