我确定之前已经问过这个问题,但是我找不到一个可行的解决scheme。
一个网站已经切换CMS服务,但有相同的域,我如何设置一个页面的nginx重写?
例如
http://sitedomain.co.uk/content/unique-page-name
http://sitedomain.co.uk/new-name/unique-page-name
请注意 ,我不希望内容页面中的所有内容都被redirect,但实际上只是上面提到的url。 我有大约9个redirect设置,其中不符合一个模式。
谢谢!
编辑:我发现这个解决scheme,似乎工作,除了它没有斜线redirect的事实:
if ( $request_filename ~ content/unique-page-name/ ) { rewrite ^ http://sitedomain.co.uk/new-name/unique-page-name/? permanent; }
但是这redirect到:
http://sitedomain.co.uknew-name/unique-page-name/
直接引用陷阱和常见错误:税务重写 :
通过使用return指令,我们可以完全避免正则expression式的评估。
请使用return
而不是rewrite
永久redirect。 这是我的这个用例的方法…
location = /content/unique-page-name { return 301 /new-name/unique-page-name; }
理想情况下,如果可以避免,则不应使用if语句。 像这样的东西可以工作(未经testing)。
location ~ /content/(.*)$ { rewrite ^ /new-name/$1?$args permanent; }
我使用了以下解决scheme:
rewrite ^(/content/unique-page-name)(.*)$ http://sitedomain.co.uk/new-name/unique-page-name/$2 permanent;
作品一种享受。
对我来说,它没有像这样的等号:
location /old-url { return 301 /new-url; }