Nginx规则在url末尾重写数字

时间:2015-10-02 16:40:31

标签: url nginx rewrite

我无法找到转换此网址的方法:

https://domain.com/en/whatever/12345-mylink

到这个

https://domain.com/en/whatever/mylink

感谢您帮助我。

在此之后我得到了这个解决方案,但它没有工作:

重写^ /(。)/(。)/([0-9] +) - (。*)ttps://domain.com/$1/$2/$3 permanent; < / p>

因为它现在指向这个:

TTPS://domain.com/12345

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

您的问题有点模糊,我无法判断您是否需要重定向,重写或您的nginx配置/ / mylink的内容。

但是,假设您只是想将重定向/任何/(插入数字)-mylink重定向到您自己的网站,sans(插入数字),以下内容应该让您走上正确的轨道:

location ~ "^/en/whatever/([0-9]+)-mylink" {
     rewrite ^(.*) http://192.168.99.100:8080/en/whatever/mylink;
}
location ~ ^/en/whatever/mylink {
    rewrite ^(.*)$ http://www.yahoo.com;
}

我用nginx旋转了一个Docker容器。我修改了/etc/nginx/conf.d/default.conf文件并添加了几行。我的docker容器在内部IP上运行,因此您需要调整您的内部IP。

如果你点击/无论/(你想要多少个数字)-mylink,它会将它重写为mylink,这只是去雅虎。

同样,你的问题真的很模糊,但我猜你想要那样的东西。

编辑: 阅读完评论后,您需要在重写时捕获正则表达式参数。你可以通过$ 1为第一个,$ 2为第二个,依此类推。这是一个有希望与您的用例更相关的示例。再次,这只是对default.conf的攻击:

location / {
    rewrite ^/en/(.*)/(.*)/([0-9]+)-mylink http://192.168.99.100:8080/en/$1/$2/mylink;
    root   /usr/share/nginx/html;
    index  index.html index.htm;
}

location ~ ^/en/whatever/whatevs/mylink {
    rewrite ^(.*)$ http://www.yahoo.com;
}

如果你把它旋转起来并转到/ en / whatever / whatevs / 12345-mylink,你就会重定向到雅虎。