簡體   English   中英

nginx將uri重寫為文件

[英]nginx rewrite uri to file

我需要nginx來打開uri文件,如:

來自/var/www/example.com/en_US/_foo_test_bar的http://example.com/en/foo/test-bar

要么

來自/var/www/example.com/en_US/_foo2_test2_bar的http://example.com/en/foo2/test2-bar

替換除字母/數字之外的所有符號以加下划線。 怎么看這個位置,可能會更好用的是重定向?

location /en/ {
rewrite ...
}

我不知道nginx和regexp中這種機制的最佳實踐。 謝謝。

您可以使用rewrite來遞歸更改符號,直到它們全部更改為止。 假設真實文件在en_US下,如您的示例所示:

location /en/ {
    rewrite ^/en/(.*)[^A-Za-z0-9_](.*)$ /en/$1_$2 last;
    rewrite ^/en/(.*)$ /en_US/$1 last;
}
location /en_US/ {
    root /path/to/real/files;
}

第一次rewrite重復匹配,直到消耗掉所有符號。 第二次rewrite准備URI以提供真實文件。

有關更多信息,請參閱此文

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM