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

时间:2015-03-04 10:40:02

标签: php .htaccess

我在为小尺寸图片创建网址时创建.htaccess规则存在问题。

我已将图片保存在upload / images /目录中,它看起来像这样:

somedomain.com/upload/images/bigimage-some_name123.jpg

我已经通过PHP创建了url,因此我可以调用已调整大小的图像:

somedomain.com/upload/images/small/bigimage-some_name123-150x100.jpg

从这个小网址我需要4个参数:

  • 名称:bigimage-some_name123
  • 扩展程序:.jpg或jpg
  • 宽度:150
  • 身高:100

通过.htaccess需要创建网址,以便我可以获取上面的所有参数并动态显示已调整大小的图像:

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]

2 个答案:

答案 0 :(得分:2)

这可以在重写规则中很好地处理,并且比在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]

答案 1 :(得分:1)

您不应尝试从.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]