【问题标题】:Nginx rewrite : how to remove everything after extension of a fileNginx重写:如何在文件扩展后删除所有内容
【发布时间】:2019-10-16 11:23:16
【问题描述】:

我的网站上有很多错误的图像和文件请求...但名称与真实姓名相近。基本上,如果我有一个名为 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]

【问题讨论】:

  • 请注意,如果我只将重写放在服务器部分,而不使用映射,则重写正在工作(除了它不会更改 url)

标签: nginx url-rewriting nginx-config


【解决方案1】:

我做了那个重写,当放在服务器部分时,它是有效的,但它没有包含在地图中。

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

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

【讨论】:

    猜你喜欢
    • 2015-07-22
    • 1970-01-01
    • 1970-01-01
    • 2021-02-13
    • 1970-01-01
    • 1970-01-01
    • 2012-03-25
    • 1970-01-01
    • 2012-11-02
    相关资源
    最近更新 更多