对于指定完整的文件路径,此 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