【问题标题】:Redirect all JPEG URL to single JPEG ing NGINX将所有 JPEG URL 重定向到单个 JPEG ing NGINX
【发布时间】:2016-03-07 08:09:43
【问题描述】:

我正在尝试实现两种方案。

场景 A:如果客户端请求的 URL 包含 .jpeg 或 .jpg 文件,则将用户重定向到服务器上的单个 .jpg 文件,在这种情况下为 myimage.jpg

场景 B : 如果客户端请求的 URL 包含 /abc/ 目录,通过代理将用户重定向到其他域,同时保持 URL 完整。

下面是我的nginx.conf的内容

http {

    server {
        listen 80;
        root /usr/share/nginx/html;

        #Scenario A
        location ~* \.(jpg|jpeg){
           rewrite ^$ /myimage.jpg break;
        }

        #Scenario B
        location ^~ /abc/ {
            proxy_pass http://cd.mycontent.com.my;
            proxy_redirect localhost http://cd.mycontent.com.my;
            proxy_set_header Host $host;
            }
    }
......

我提到的大部分都是Nginx redirect to a single file 配置在 /var/log/nginx/error.log 中不包含错误,但它没有按预期执行。


方案 A 的更新:

我已经添加了根指令,但它仍然没有重写 URL。我设法在 Apache 中实现了这一点,但在 Nginx 中却没有。在 Apache 中,我只创建内容如下的 htaccess 文件:

Options +FollowSymLinks

<IfModule mod_rewrite.c>
RewriteEngine On

#Check URL if contain .jpeg or .jpg
RewriteCond %{REQUEST_URI}  (\.jpeg|\.jpg)$
RewriteRule (.*)  myimage.jpg [QSA]

</IfModule>

使用这个 htaccess,我可以用 .jpeg|.jpg 重写任何 URL 请求,并且用户将看到 myimage.jpg 的图像,而不是他们使用 URL 请求的任何 jpeg|jpg 图像。我已经尝试使用 htaccess 到 nginx 转换器 here 但它不起作用。

【问题讨论】:

    标签: redirect nginx


    【解决方案1】:

    您的配置存在一些问题。您似乎没有定义 root 指令,并且重写将循环。另外,不确定是否使用带有 last 修饰符的绝对重定向。

    root /path/to/document/root;
    
    location ~* \.(jpg|jpeg) {
        rewrite ^ /myimage.jpg break;
    }
    

    请注意,正则表达式将匹配带有嵌入 .jpg 字符串的 URI。如果您只想匹配以 .jpg 结尾的 URI,请附加 $

    break 将通过处理同一位置块内的 URI 来防止重定向循环。

    详情请见this document

    【讨论】:

      猜你喜欢
      • 2019-02-02
      • 2016-08-09
      • 1970-01-01
      • 2010-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多