regex — преобразовать правило перезаписи .htaccess в переполнение стека

У меня есть сайт 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;

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

0

Решение

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

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

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

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

Следовательно, шаблон, который вы должны реализовать, должен выглядеть как switch заявление или серия if-elseifs.

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

Смотрите также / Дальнейшие ссылки:

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]