nginx 重写 URL 模式 URL 中间部分

nginx 重写 URL 模式 URL 中间部分

对于指定完整的文件路径,此 nginx 规则对我来说非常有用

rewrite ^/sitemap.xml$ /sitemap.php last;

当我访问 sitemap.xml 时,它按预期工作,但在后台请求 sitemap.php。到目前为止一切顺利。

出现了另一个问题,我需要重写现有 URL 的最后一部分

rewrite ^doctor-solution.html/ doctor-answer.html/https://example.com/case12232-doctor-solution.html/永久的;我想要实现的是,当访问旧的 URL 时,必须将其重定向到

https://example.com/case12232-doctor-answer.html/

但我的规则似乎不起作用。有什么想法吗?

我可以做类似的事情吗,这给了我错误

 rewrite ^/([a-z]+)-doctor-solution.html/$ /{$1}-doctor-answer.html/;

答案1

您忘记在正则表达式中包含数字,并且在引用匹配模式时出错,因此这是$1而不是{$1}(参见 Richard Simith 的评论)

你的情况的解决方案

rewrite ^/([a-z0-9]+)-doctor-solution.html/$ /$1-doctor-answer.html/ redirect;

更多文档 https://nginx.org/en/docs/http/ngx_http_rewrite_module.html#rewrite

相关内容