【问题标题】:Nginx rewrite local file pathNginx 重写本地文件路径
【发布时间】:2023-04-01 04:50:02
【问题描述】:

这种url可以重写吗?

请求网址: https://image.domain.com/listing/1_10_iP2LROSEafC01584630756.jpg 改写为: https://image.domain.com/images/i/P/2/L/iP2LROSEafC01584630756.jpg

如果 /images/i/P/2/L/iP2LROSEafC01584630756.jpg 存在于服务器中,则提供服务,否则将查询重定向到 php 文件 /make_image.php

谢谢!

【问题讨论】:

    标签: nginx url-rewriting


    【解决方案1】:

    请求网址:https://image.domain.com/listing/1_10_iP2LROSEafC01584630756.jpg 重写为:https://image.domain.com/images/i/P/2/L/iP2LROSEafC01584630756.jpg

    如果您指的是外部重定向,则可以使用 rewrite 指令来实现。将语句放在server 块中,或在处理此类请求的location 块中(即以/listing/ 开头和/或以.jpg 结尾的URI)。

    您的问题没有说明 1_10_ 的含义,但我们假设您希望忽略这两个任意数字。

    例如:

    rewrite ^/listing/\d+_\d+_(.)(.)(.)(.)(.*)$ /images/$1/$2/$3/$4/$5 permanent;
    

    详情请见this document

    如果 /images/i/P/2/L/iP2LROSEafC01584630756.jpg 存在于服务器中,则提供服务,否则将查询重定向到 php 文件 /make_image.php

    这是使用location 块中的try_files 语句来实现的,该块处理以/images/ 开头的URI 请求。

    例如:

    location /images/ {
        try_files $uri /make_image.php;
    }
    

    详情请见this document

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-12
      • 1970-01-01
      • 2018-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-22
      相关资源
      最近更新 更多