【问题标题】:Mod Rewrite rule for images图像的 Mod 重写规则
【发布时间】:2017-10-05 10:39:27
【问题描述】:

我想在不保存所有变化的情况下使用 PHP 动态生成各种图像尺寸。 现在我上传一张图片并生成各种尺寸并将所有这些文件保存在服务器上。图片的路径如下:

/20151217/124043_205037_x.jpg
  • 第一部分是文件夹
  • 第二部分是文件名。
  • 第三部分是_x_s_l 标志(原始、小、大等)

我想调用 PHP 脚本并返回如下图像:

/imageManipulationScript.php?folder=20151217&file=124043_205037&flag=x

所以我想制定一个 mod_rewrite 规则来调用:

<img src="https://somecdn.com/20151217/124043_205037_x.jpg">

服务器会运行这个:

/imageManipulationScript.php?folder=20151217&file=124043_205037&flag=x

我将通过 cdn 调用这个 img src,因此图像将被缓存并在每个图像/维度仅执行一次。

我不想更改图像的当前路径和结构,因为那样我将不得不更改我网站上的实现

有什么想法吗?

【问题讨论】:

  • 你真的试过自己写这个吗?
  • 是的,但是我的正则表达式很弱

标签: php regex image .htaccess mod-rewrite


【解决方案1】:

您可能需要调整 3 个正则表达式以适合您允许的字符,但这些行中的某些内容应该可以工作。

RewriteEngine on
RewriteRule ^([A-Za-z0-9-]+)/([A-Za-z0-9-]+)_([A-Za-z0-9-]+).jpg$ imageManipulationScript.php?folder=$1&file=$2&flag=$3 [NC]

【讨论】:

  • 使用正则表达式时,您应该尽可能具体,因此如果字符只能是 xsl,则只检查 xs 或 @ 987654327@。示例中的其他字符似乎主要是数字。那么,^(\d+)/([\d_]+)_(x|s|l)\.jpg$ 之类的内容可能更合适?
猜你喜欢
  • 2010-11-13
  • 2012-05-13
  • 2012-06-14
  • 1970-01-01
  • 1970-01-01
  • 2015-09-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多