/ / Перетворити правило перезапису .htaccess у PHP - php, regex, .htaccess, mod-rewrite, pantheon

Перетворення правила перезапису .htaccess у PHP - php, regex, .htaccess, mod-rewrite, panheon

У мене на сайті Пантеон працює WordPress,який використовує 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 для відповіді № 1

Деякі коментарі.

Перший щодо last прапор, прямо з Документація Apache про перезапис:

The [L|last] прапор причини mod_rewrite щоб припинити обробку правила набір. У більшості контекстів це означає, що якщо правило відповідає, не далі правила будуть оброблені. Це відповідає останній команді в Perl, або команда break у C. Використовуйте цей прапор, щоб вказати, що струм правило слід застосовувати негайно, не враховуючи подальших правил.

Ось ще кілька подробиці на last.

Тому шаблон, який вам доведеться реалізувати, повинен виглядати як switch заява або серія if-elseifс

Однак, йдеться у вікі Nginx використання "якщо" є злом. Пропонується використовувати try_files замість цього.

Дивіться також / Додаткові посилання: