Nginx - Wordpress重定向到默认网址

时间:2018-02-07 11:55:11

标签: php wordpress .htaccess redirect nginx

我有一个关于重定向的问题我想重定向到example.com/12321.html到example.com?p=12321。

我是url typle之前的用户,就像我将系统更改为seo url并将内容名称改为url后的第一个数字。现在我邀请最佳系统重定向到?p =

我尝试的是什么

首先我尝试更改.htaccess无法正常使用此代码

RewriteEngine On
RewriteRule "^([0-9]+)+[^.html]" "https://www.example.com?p=$1" 

比起nginx在nginx服务器块上编写代码

rewrite ^([0-9]+)+[^.html] https://www.example.com/$1 redirect;

我不明白这就是为什么不工作,我已经在显示在那里工作的https://regex101.com/r/pimHGN/1检查了。

2 个答案:

答案 0 :(得分:2)

好的,作为一个快速检查,您可以尝试像Apache的以下正则表达式:

// menu is the end point of my interactive messages
app.post('/menu', (req, res) => {
  console.log('from form submission:', req.body.payload)
  res.sendStatus(200);
})

对于Nginx来说是这样的:

RewriteRule ^/([0-9]+)\.html$ https://www.example.com?p=$1 [L,R=301]

这应匹配由数字rewrite ^/([0-9]+)\.html$ https://www.example.com?p=$1 permanent; 0-9组成的任何页面。

您发布的规则在.html部分不匹配,这可能就是它无法正常工作的原因。

答案 1 :(得分:1)

不太清楚您要尝试做什么,但是,除非您的rewrite规则首先从/移除$uri,否则您的规则{{1永远不会匹配,因为rewrite ^([0-9]+)+[^.html] https://www.example.com/$1 redirect;不可能不以$uri开头,因此/永远不会抓到任何东西。 (另外,^([0-9]+)看起来也很可疑 - 我觉得它不会按照你的预期行事。)

正确的方法可能是:

[^.html]

但是,根据nginx redirect loop, remove index.php from url并且相关,以下“循环”可能是您真正想要的:

rewrite ^/([0-9]+)\.html$ /?p=$1 redirect;

上面的代码将确保if ($request_uri ~ ^/?p=([0-9]+)) { return 302 /$1.html } rewrite ^/([0-9]+)\.html$ /?p=$1; 样式仅在nginx和后端内部使用,而在外部,所有内容总是被重定向到/?p=样式页面并从中提供。 / p>