在Nginx中配置永久重写

时间:2015-03-03 11:03:20

标签: php .htaccess 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错误。

你能帮帮我吗?

1 个答案:

答案 0 :(得分:0)

最后我知道如何解决它:

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;
}
祝你好运!