将.htaccess重写规则转换为PHP



我在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;

有人可以指向正确的方向吗?

一些注释。

首先,关于last标志,直接从Apache文档重写:

[L|last]标志使mod_rewrite停止处理规则 放。在大多数情况下,这意味着如果规则匹配,则无需 规则将被处理。这对应于perl中的最后一个命令, 或C中的Break命令。使用此标志表示当前 不考虑进一步规则的情况下应立即应用规则。

这是last的更多详细信息。

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

但是,Nginx Wiki说使用"如果"是邪恶的。建议改用try_files

另请参见/进一步的参考:

  • 万神殿文档:使用PHP作为HTACCESS替代品
  • 万神殿文档:查看更多重定向方案
  • 从"如果"转换nginx重写。到" try_files"

这就是我使用的。使用卷曲来替代不同的URL路径。与Drupal和WordPress一起使用。https://github.com/mpaladino/pantheon-htaccess-rewrites

最新更新