Nginx Mod Rewrite - 将 *.png 重写为 *.php

Nginx Mod Rewrite - 将 *.png 重写为 *.php

我遇到了 Nginx Rewrites 问题

目前我的规则如下所示

最后重写 ^/i/(.*?)$ /i/$1.php;

基本上,我想要做的是将所有 .png 文件重定向到 /i 目录中的 .php。但是,似乎 $ 必须位于末尾,因此我无法执行

最后重写 ^/i/(.*?)$.png /i/$1.php;

有人有解决办法吗?

谢谢本

答案1

您的 正在处理 .png 文件的请求location ~* \.(js|css|png|jpg|jpeg|gif|ico)$。只需停止处理 png 文件并添加仅处理它们的新位置即可:

server {
  location ~* \.(js|css|jpg|jpeg|gif|ico)$ {
    # the same stuff you already had in here
  }

  location ~* ^(?<basename>.*)\.png$ {
    rewrite ^ $basename.php last;
  }

  # your other locations
}

答案2

哦,现在我明白问题所在了。

您的重写规则如下所示:

rewrite ^/i/(.*?)$ /i/$1.php last;

因此这将重写/i/cute.png/i/cute.png.php。它可能不存在。

你说你只是想改变 .png,所以.php尝试这样的事情:

rewrite ^/i/(.*?).png$ /i/$1.php last;

相关内容