Это правило nginx отлично работает для меня для полного указанного пути к файлу
rewrite ^/sitemap.xml$ /sitemap.php last;
Когда я получаю доступ к sitemap.xml, он работает, как ожидалось но в фоновом режиме запрашивается sitemap.php. Пока все хорошо.
Возникла другая проблема, и мне нужно переписать последнюю часть существующих URL
переписать ^ doctor-solution.html / doctor-answer.html /
постоянный;
Я хочу получить доступ к старому URL-адресу, например https://example.com/case12232-doctor-solution.html/
, он должен быть перенаправлен на
https://example.com/case12232-doctor-answer.html/
Но мое правило не похоже работать. Есть идеи?
Могу я сделать что-то вроде этого, это вызывает ошибку
rewrite ^/([a-z]+)-doctor-solution.html/$ /{$1}-doctor-answer.html/;
Вы забыли включить цифру в свое регулярное выражение и сделали ошибку при ссылке на соответствующий шаблон, поэтому это $ 1
, а не {$ 1}
(см. комментарий Ричарда Симита)
В вашем случае решение
rewrite ^/([a-z0-9]+)-doctor-solution.html/$ /$1-doctor-answer.html/ redirect;
Дополнительная документация по https://nginx.org/en/docs/http/ngx_http_rewrite_module.html#rewrite