0

我有一个在 Pantheon 上运行的 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;

谁能指出我正确的方向?

4

2 回答 2

0

一些评论。

首先关于last标志,直接来自关于 rewrite 的 Apache 文档

[L|last]标志导致mod_rewrite停止处理规则集。在大多数情况下,这意味着如果规则匹配,则不会处理更多规则。这对应于 Perl 中的最后一条命令,或 C 中的 break 命令。使用此标志指示应立即应用当前规则而不考虑进一步的规则。

以下是有关.last

因此,您必须实现的模式应该看起来像一个switch语句或一系列if-elseifs。

然而,Nginx wiki 说使用 "if" 是邪恶的。建议try_files改用。

另见/进一步参考:

于 2018-04-27T07:10:09.140 回答
0

这就是我使用的。使用 curl 代理到不同的 URL 路径。适用于 Drupal 和 Wordpress。 https://github.com/mpaladino/pantheon-htaccess-rewrites

于 2020-08-18T02:41:31.633 回答