У мене на сайті Пантеон працює 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
замість цього.
Дивіться також / Додаткові посилання:
- Документи з пантеоном: Використання PHP як альтернативи htaccess
- Документи Пантеона: Дивіться більше сценаріїв переадресації
- Перетворити перезапис Nginx з "якщо" в "try_files"