我已经将我的博客从 wordpress 迁移到奥托普莱斯并从一个域到另一个域。
我想创建从旧页面到新页面的重写(旧结构是http://domain.old/?p=number)为此我创建了服务器块,其中包含:
server {
listen 80;
listen [::]:80;
server_name .domain.old;
rewrite .*p=1$ https://domain.new/2011/rebirth/ permanent;
rewrite .*p=11$ https://domain.new/2011/travelling-salesman-problem/ permanent;
rewrite .*p=14$ https://domain.new/2011/minecraft-classic-client-with-fly-ability/ permanent;
# rewrite ^ https://domain.new permanent;
}
如果我取消注释最后一个字符串,我将获得https://domain.new/p=14
请求http://domain.old/p=14
。如果注释掉它,我将收到一些 nginx 欢迎消息,但没有重定向。
我没有主意了。如能提供任何帮助,我将不胜感激。
答案1
Arewrite
指令不能应用于$query_string
并且只能改变$uri
。为了实现您想要做的事情,您可以执行以下操作......
server {
listen 80;
listen [::]:80;
server_name .domain.old;
if ( $arg_p = 1 ) {
return 301 https://domain.new/2011/rebirth/;
}
if ( $arg_p = 11 ) {
return 301 https://domain.new/2011/travelling-salesman-problem/;
}
if ( $arg_p = 14 ) {
return 301 https://domain.new/2011/minecraft-classic-client-with-fly-ability/;
}
# other manual redirects
# ...
# global redirect
return 301 https://domain.new;
}
请注意假如邪恶。