Nginx 重写:如何在文件扩展后删除所有内容
Nginx rewrite : how to remove everything after extension of a file
我的网站上有很多对图像和文件的不良请求...但名称与真实姓名相近。基本上,如果我有一个名为 example.gif 的文件,就会调用 example.gifzerzer。我想要的是重写以保留名称和扩展名,但后面什么都没有。
我确实创建了一个带有重写的映射文件(它正在工作,例如下面的 tmp.php 到 index.php 重写,除了扩展后删除所有内容的规则)。
这是我到目前为止所做的:
/(.+\.(bmp|gif|ico|jpeg|jpg|png|svg)).+ /;
这也不起作用
/(.+\.(bmp|gif|ico|jpeg|jpg|png|svg)).+? /;
我的地图:
map $request_uri $redirect_uri {
default "";
/(.+\.(bmp|gif|ico|jpeg|jpg|png|svg)).+ /;
/tmp.php /index.php;
}
在迁移到 Nginx 之前,我在 Apache 下,这很有效:
RewriteRule ^([a-z0-9\-/_]*\.(bmp|gif|ico|jpeg|jpg|png|svg)).+ / [R=301,L]
我做了那个重写是有效的,当放在服务器部分时,但它不包含在地图中。
location ~ (.+\.(bmp|gif|ico|jpeg|jpg|png|svg)).+$ {
return 301 /;
}
如果有人知道为什么,或者可以确认我做对了?
我的网站上有很多对图像和文件的不良请求...但名称与真实姓名相近。基本上,如果我有一个名为 example.gif 的文件,就会调用 example.gifzerzer。我想要的是重写以保留名称和扩展名,但后面什么都没有。
我确实创建了一个带有重写的映射文件(它正在工作,例如下面的 tmp.php 到 index.php 重写,除了扩展后删除所有内容的规则)。
这是我到目前为止所做的:
/(.+\.(bmp|gif|ico|jpeg|jpg|png|svg)).+ /;
这也不起作用
/(.+\.(bmp|gif|ico|jpeg|jpg|png|svg)).+? /;
我的地图:
map $request_uri $redirect_uri {
default "";
/(.+\.(bmp|gif|ico|jpeg|jpg|png|svg)).+ /;
/tmp.php /index.php;
}
在迁移到 Nginx 之前,我在 Apache 下,这很有效:
RewriteRule ^([a-z0-9\-/_]*\.(bmp|gif|ico|jpeg|jpg|png|svg)).+ / [R=301,L]
我做了那个重写是有效的,当放在服务器部分时,但它不包含在地图中。
location ~ (.+\.(bmp|gif|ico|jpeg|jpg|png|svg)).+$ {
return 301 /;
}
如果有人知道为什么,或者可以确认我做对了?