在Nginx中配置一个永久重写


Configure a permanent rewrite in Nginx

我们开发了一个新版本的网站。以前它是在Apache下运行的,但现在我们使用Nginx。我们有一些规则想继续使用,我们不知道为什么这些规则在Nginx:中不起作用

我们在Htaccess上得到了以下声明:

RewriteCond %{REQUEST_URI} !(get-now)$
RewriteRule ^en/prices/product/(.*)$ en/prices/product/$1-get-now [R=301,L]
RewriteRule ^de/preise/product/(.*)$ de/preise/product/$1-get-now [R=301,L]

我们在Nginx:的尝试

rewrite ^/en/prices/product/((?!get-now).*)$ /en/prices/product/$1-get-now permanent;
rewrite ^/de/preise/product/((?!get-now).*)$ /de/preise/product/$1-get-now permanent; 

我们希望像下面的例子一样运行它:

如果用户键入:

"http://ourwebsite.com/de/preise/product/product-name"

他应该被重定向到:

"http://ourwebsite.com/de/preise/product/product-name-GET-NOW"

那么,发生了什么

键入的用户

"http://ourwebsite.com/de/preise/product/product-name"

正在重定向到

"http://ourwebsite.com/de/preise/product/product-name-GET-NOW"

但是键入的用户

"http://ourwebsite.com/de/preise/product/product-name-GET-NOW"得到404错误。

你能帮我吗?

我终于知道如何解决它了:

if ($uri !~ "(get-now)$"){
    set $rule_0 1$rule_0;
}
if ($rule_0 = "1"){
    rewrite ^/en/prices/product/(.*)$ /en/prices/product/$1-get-now permanent;
}

祝你好运!