我在创建.htaccess规则时遇到问题,该规则用于为调整大小的小图像创建url。
我已经在上传/图像/目录中保存了图像,它看起来像这样:
somedomain.com/upload/images/bigimage-some_name123.jpg
我已经通过PHP创建了url,所以我可以调用调整大小的图像:
somedomain.com/upload/images/small/bigimage-some_name123-150x100.jpg
从这个小url我需要4个参数:
- 名称:bigimage-some_name123
- 扩展名:.jpg或jpg
- 宽度:150
- 高度:100
通过.htaccess需要创建url,这样我就可以获取上面的所有参数,并在飞行中显示调整大小的图像:
somedomain.com/image-resizer/index.php?image=upload/images/bigimage-some_name123.jpg&width=150&height=100
我的同事发给我这个.htaccess行,我需要重写它,这样它才能在我的项目中工作。
RewriteRule
^upload/images/small/([^/.]+)-([0-9]{3,5})([^/.]+)-([0-9]{2,3})x([0-9]{2,3}).jpg$
module/show_image.php?name=../files/$2$3.jpg&width=$4&height=$5 [L]
这可以在重写规则中很好地处理,而且它也比在PHP中处理快得多。您可以在根.htaccess
:中使用此规则
RewriteEngine On
RewriteBase /
RewriteRule ^(upload/images)/small/(.+?)-(d+)x(d+).(jpe?g)$ image-resizer/index.php?image=$1/$2.$5&width=$3&height=$4 [L,QSA,NC]
您不应该试图从.htaccess重写规则中的路径提取信息。在PHP中这样做要容易得多。所以我所做的是将整个SEO优化的URL提供给重写规则后面的PHP页面。我的.htaccess看起来是这样的:
RewriteRule ^(.*)$ /page.php?SEOPath=$1 [NC,L,QSA]
你可以看到现在的重写规则有多简单。然后在PHP中,我研究SEO路径,提取想要的信息,这并不太难。
当然,你仍然需要适应你的情况。例如,将其限制为仅.jpg文件。在你的情况下,它可能是:
RewriteRule ^(.*).jpg$ /module/your.php?SEOPath=$1 [L]