我使用nginx服务器静态image文件。在我的目录中,所有图像都以扩展名_.txt存储(基本上重命名为。文本)。例如:background.png将存储为background.png .txt

如何redirect查找 domain.com/images/background.png以查找 /static/images/background.png_.txt

这是我到目前为止的nginx配置...

    location /images/  {
        alias    /static/images/;
        access_log off;
    }       
分析解答

这适用于我的服务器。它只需要处理images目录中的某些内容并检查它是否存在,然后检查它是否存在.txt扩展名,最后如果找不到则会出现404错误。

location /images/ {
default_type "image/gif";
try_files $uri $uri.txt $uri =404;
}

请确保您没有复制location/images block。添加它,如果它不存在,但它应该已经,所以只需添加try_files行。

正如我在评论中所写,如果您的服务器在转到images目录时尚未在static中搜索,我会感到惊讶。但是,如果我共享的代码不起作用,您可以将修改后的image文件的路径添加到块中,例如:

location /images/ {
root /home/username/path_to_site/domain.com/static/images;
default_type "image/gif";
try_files $uri $uri.txt $uri =404;
}

编辑 如果您检查response标题,某些浏览器会以content-type:text/plain的形式显示图像。一个黑客来覆盖它是直接在图像位置块中指定类型:

location /images/ {
default_type "image/gif";
try_files $uri $uri.txt $uri =404;
types {
    text/plain    gif;
    image/jpg     jpeg jpg;
    image/png     png;
    image/gif     gif;
    image/x-icon  ico;
 }
}

这些类型在nginx中的其他地方定义,但如果您不想在服务器的内部进行手术,这会更容易。重要的是text/plain gif;。这是将images目录中找到的任何文本文件定义为image/gif

最后的想法:作为改写,这可能会更好,但也许其他人知道该方法的细节。