У меня есть сайт 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;
Может кто-то указать мне верное направление?
Некоторые комментарии.
Сначала о last
флаг, прямо из Apache документация по переписыванию:
[L|last]
флаг причиныmod_rewrite
прекратить обработку правила
задавать. В большинстве случаев это означает, что, если правило совпадает, больше нет
правила будут обработаны. Это соответствует последней команде в Perl,
или команда break в C. Используйте этот флаг, чтобы указать, что текущий
Правило должно применяться немедленно, без учета дальнейших правил.
Вот еще несколько подробности на last
,
Следовательно, шаблон, который вы должны реализовать, должен выглядеть как switch
заявление или серия if-elseif
s.
Тем не менее, вики Nginx говорит используя «если» это зло. Предлагается использовать try_files
вместо.
Смотрите также / Дальнейшие ссылки:
Других решений пока нет …