我遇到了 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;