使用nginx </handle> </handle>将/ @ <handle>转换为/ users / profile / <handle>

时间:2015-03-19 21:23:55

标签: nginx url-rewriting

我正在寻找能够做到这一点的nginx规则:

input url: http://domain.com/@johndoe
what our backend sees: http://domain.com/users/profile/johndoe

示例:http://medium.com/@stuartkhall

我目前使用的规则(删除了与此问题无关的内容):

server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;

    server_name _;

    root /var/html;

    location / {

        try_files $uri $uri/ /index.php$is_args$args;

    }

    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_pass  mainphp;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }

}

我可以添加到我当前的nginx配置中的哪种规则?我尝试使用rewrite,但无法使其正常工作。

1 个答案:

答案 0 :(得分:0)

更好的做法是位置+返回而不是重写,所以试试这个(放在任何位置之前):

location ~ ^/@(.*)$ {
    return 301 /users/profile/$1;
}

或相同的重写,如果你喜欢它

rewrite ^/@(.*)$ /users/profile/$1 last;