首頁  >  問答  >  主體

nginx如何設定某個目錄下的檔案不區分大小寫

動態產生快取了,想透過URL來直接讀取這些快取檔案已達到效率更高的目的。但是快取字母統一都是小寫。如http://xxx/ooo/abc.jpg

當使用者讀取http://xxx/ooo/ABC.jpg的時候無法定位到快取(報錯

請問如何只在ooo/這個路徑下忽略檔案大小寫?

给我你的怀抱给我你的怀抱2689 天前758

全部回覆(3)我來回復

  • 仅有的幸福

    仅有的幸福2017-05-16 17:30:49

    樓上都沒看清楚題目,就貼了個鏈接,可惜我聲望不夠,不然肯定踩你一下
    我回答一下樓主的問題,兩個方案:
    1. 採用nginx官方提供的Perl Moudle,注意這個模組並沒有自動加載,需要運行配置文件時增加--with-httpperlmodule。首先,location要匹配到ooo目錄,然後要匹配剩餘uri,如果有大寫,則調用perl將url全部轉成小寫,然後rewrite,參考配置代碼:

        #测试perl的统一转小写功能
        perl_set    $url '
            sub {
                    my $r = shift;
                    my $lurl = lc($r->uri);
                    return $lurl;
            }
        ';
    
        location ~* ^/ooo/ {
            if ($uri ~ [A-Z]) {
                rewrite ^(.*)$  $url    premanent;
            }   
    
            root ooo所在的根目录;
        }
    
    
    1. google發現有人提供了nginx的第三方模組,用法說的比較清楚,我直接貼出連結好了:https://github.com/replay/ngx_http_lower_upper_case

    回覆
    0
  • 伊谢尔伦

    伊谢尔伦2017-05-16 17:30:49

    可以用lua、perl做處理,也可以寫模組進行,上面已經給了,就不重複了。

    回覆
    0
  • PHP中文网

    PHP中文网2017-05-16 17:30:49

    http://sookk8.blog.51cto.com/455855/564705

    回覆
    0
  • 取消回覆