如何添加独立于服务器的外部重写规则?

时间:2013-03-12 作者:EAMann

外部重写规则非常棒。它们让您定义不一定通过WordPress的重写index.php. 这意味着您可以将任意规则映射到任意文件,如:

$wp_rewrite->add_external_rule( \'^somethingrandom/?$\', \'wp-content/wp-uploads/hiddendirectory/somefile.php\' );
那么http://site.url/somethingrandom/ 将从不同的目录中提供一个静态PHP文件。这太神奇了,它可以让你做各种漂亮的事情。

But it only works with Apache.

这个add_external_rule() 方法将其注册的规则写入.htaccess. 因为Nginx不使用.htaccess 文件,则该服务器将完全忽略外部规则。我需要的是一种独立于服务器的方式,以编程方式注册上述规则。有什么想法吗?

1 个回复
最合适的回答,由SO网友:TheLastCicada 整理而成

这也假定。HTTPAccess文件在Apache中启用,Apache几乎总是在共享主机中,但在企业环境中经常被禁用。实现这一点的一种方法是编写自己的add\\u external\\u nginx\\u规则函数,将redirets写入文件(甚至可以使用.htaccess,尽管这可能会让人困惑-它应该是一个以.开头的隐藏文件),然后将其包括在nginx服务器块中,如

include /var/www/html/sitefolder/.htaccess;
在您的函数中,您将以Nginx格式编写重定向,这在许多情况下与Apache格式几乎相同。这可能是你甚至可以变成插件的东西。它确实需要在Nginx配置文件中进行特殊配置,但使用。Apache中的htaccess要求在Apache配置文件中也启用该功能,因此您可能会认为这是相同的概念。

注意:我没有尝试过任何一种方法,但没有理由不起作用。值得探索。

更新:注释中的标记是正确的-这不起作用,因为Nginx仅在初始启动或重新加载时读取配置文件,因此您需要在进行任何更改后重新启动Nginx,这使得此解决方案从安全角度来看存在问题。

结束

相关推荐

使用nginx和php-fpm的多域WordPress安装

我是Wordpress的新手。我在google上搜索了一下,但找不到使用nginx多站点配置安装Wordpress的确切步骤。我想在Ubuntu 11.10上安装wordpress 3.3.1。我已安装我有两个域,我想使用相同的wordpress安装domain1.com domain2.com 您能为多域设置提供nginx和wordpress配置吗?谢谢大家。