我们不久前重新启动了我们的wordpress网站,我试图否定我们的Google抓取工具错误。
我们使用简单模式在trackback网址上有超过10k的错误。编写一个小脚本并逐个修复它很容易,但我想是否可以通过nginx服务器配置中的一个简单重写规则解决这个问题
旧图案: {蛞蝓} / {ID} /引用
应重定向到:{slug}
遗憾的是,我对正则表达式表达不满,并且在编写重写规则方面经验不足。我所知道的是,我应该有一个位置告诉nginx何时执行所需的重写规则,我正在考虑这样的事情location ^.*/trackback {
rewrite ^.*/[0-9].*/trackback /$1
}
当我尝试此规则时,重新启动nginx时出现unexpected "}"
错误消息
另外,位置模式与重写语句非常相似,对我来说看起来非常可疑,也许有更好的解决方案?
当前版本:
location ~^(.*)/trackback {
rewrite ^(.*)/[0-9]+/trackback $1 last;
}
语法问题已消失,但规则不适用/未触发 这里有一个例子
/my-test-article/12312/trackback
现在应该重定向到
/my-test-article
但它没有
这个正在运行(将last
更改为redirect
并转义斜杠)
location ~ ^(.*)\/trackback {
rewrite ^(.*)\/[0-9]+\/trackback $1 redirect;
}
答案 0 :(得分:0)
在;
规则之后,语法错误可能缺少rewrite
。您在~
指令中也缺少location
运算符(有关详细信息,请参阅this document)。你错过了捕获。
你是正确的,location
正则表达式需要测试是重复的,然后rewrite
正则表达式需要测试,这可能会重复工作。
由于重写规则非常具体,因此它应该放在server
块上方的所有location
块中。
如果id
是一个纯粹的数字字段,那么这样的事情应该有效:
rewrite ^(.*)/[0-9]+/trackback $1 last;