通过htaccess为调整大小的图像创建SEO URL


Creating SEO urls for resized images via htaccess

我在创建.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]