Nginx重写:文件扩展名后如何删除所有内容

时间:2019-05-30 19:20:56

标签: nginx url-rewriting nginx-config

我的网站上对图像和文件的请求很多,但是名称与真实名称相近。基本上,如果我有一个名为example.gif的文件,则可以调用example.gifzerzer。我想要的是重写以保留名称和扩展名,但之后没有任何内容。

我确实通过重写创建了一个映射文件(例如,除了将扩展名后的所有内容删除的规则外,它正在将tmp.php改写为index.php)。

这是我到目前为止所做的:

/(.+\.(bmp|gif|ico|jpeg|jpg|png|svg)).+ /$1;

这也不起作用

/(.+\.(bmp|gif|ico|jpeg|jpg|png|svg)).+? /$1;

我的地图:

map $request_uri $redirect_uri {
  default "";
  /(.+\.(bmp|gif|ico|jpeg|jpg|png|svg)).+ /$1;
  /tmp.php /index.php;
}

在迁移到Nginx之前,我在Apache领导下工作,

RewriteRule ^([a-z0-9\-/_]*\.(bmp|gif|ico|jpeg|jpg|png|svg)).+ /$1 [R=301,L]

1 个答案:

答案 0 :(得分:0)

当放在服务器部分时,我做了那可以正常工作的重写,但后来它没有包含在地图中。

location ~ (.+\.(bmp|gif|ico|jpeg|jpg|png|svg)).+$ {
    return 301 /$1;
}

如果有人知道为什么,或者可以确认我做对了?