Преобразовать правило перезаписи .htaccess в PHP - PullRequest
0 голосов
/ 25 апреля 2018

У меня есть сайт WordPress, работающий на Pantheon, который использует nginx.Правила перезаписи в файлах .htaccess игнорируются, поэтому их нужно поместить в wp-config.php.Мои навыки регулярных выражений более или менее отсутствуют, и мне нужно преобразовать эти правила переписывания в PHP:

rewrite ^/sitemap(-+([a-zA-Z0-9_-]+))?\.xml$ "/index.php?xml_sitemap=params=$2" last;
rewrite ^/sitemap(-+([a-zA-Z0-9_-]+))?\.xml\.gz$ "/index.php?xml_sitemap=params=$2;zip=true" last;
rewrite ^/sitemap(-+([a-zA-Z0-9_-]+))?\.html$ "/index.php?xml_sitemap=params=$2;html=true" last;
rewrite ^/sitemap(-+([a-zA-Z0-9_-]+))?\.html.gz$ "/index.php?xml_sitemap=params=$2;html=true;zip=true" last;

Может кто-нибудь указать мне правильное направление?

1 Ответ

0 голосов
/ 27 апреля 2018

Некоторые комментарии.

Сначала о флаге last, прямо из документации Apache о перезаписи :

Флаг [L|last] вызывает mod_rewrite чтобы остановить обработку набора правил.В большинстве случаев это означает, что если правило соответствует, дальнейшие правила не будут обрабатываться.Это соответствует последней команде в Perl или команде break в C. Используйте этот флаг, чтобы указать, что текущее правило должно применяться немедленно, без учета дальнейших правил.

Вот еще несколько подробностей на last.

Поэтому шаблон, который вы должны реализовать, должен выглядеть как switchоператор или серия if-elseif с.

Однако вики Nginx говорит , используя «если» - зло .Вместо этого рекомендуется использовать try_files.

См. Также / Дополнительные ссылки:

...