使用反向代理和多站点安装

时间:2014-10-03 作者:Nicholas Rowe

我们有一个wordpress多站点,主站点有一个与主站点类似的URL。com公司

每个子站点都有一个URL,如subdomain1。主站点。com,子域2。主站点。com等每个我们想隐藏在单独反向代理(如revprox1)后面的子站点。com/RP1子站点显示子域1。主站点。com,revprox2。com/rp2subsite显示子域2。主站点。com等

使用下面的代码在IIS7上执行反向代理,网站显示在相关的反向代理URL上,但是页面上的所有超链接都引用原始URL,而不是反向代理,因为wordpress使用绝对路径。我们安装了一个插件,强制wordpress为所有链接强制执行相对路径,此时所有链接都起作用,反向代理文件夹被附加到链接的开头,但是CSS被破坏,因为它正在反向代理的根位置查找CSS,而没有附加反向代理文件夹,例如它在revprox1处查找CSS。com/css。css而不是revprox1。com/rp1subsite/css。css

我想知道以前是否有人尝试过像这样设置Wordpress,我应该看些什么来解决这个问题,好像CSS正在正确的位置上寻找它对我们有用一样。我们不可能真正改变数据库,因为我们希望能够允许我们的网站管理员以最少的参与来设置新网站。

    <rule name="Reverse Proxy to Site 1" stopProcessing="true">
        <match url="^rp1subsite/(.*)" />
        <action type="Rewrite" url="http://subdomain1.mainsite.com/{R:1}" />
    </rule>
    <rule name="Reverse Proxy to Site 2" stopProcessing="true">
        <match url="^rp2subsite/(.*)" />
        <action type="Rewrite" url="http://subdomain2.mailsite.com/{R:1}" />
    </rule>
</rules>
<outboundRules>
    <rule name="Add application prefix" preCondition="IsHTML">
        <match filterByTags="A" pattern="^/(.*)" />
        <conditions>
            <add input="{URL}" pattern="^/(rp1subsite|rp2subsite)/.*" />
        </conditions>
        <action type="Rewrite" value="/{C:1}/{R:1}" />
    </rule>
    <preConditions>
        <preCondition name="IsHTML">
            <add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" />
        </preCondition>
    </preConditions>
</outboundRules>

1 个回复
SO网友:Mark Kaplun

如果您希望wordpress在被要求提供示例中的内容时表现良好。com您需要对其进行配置以了解这一点。这是在安装wordpress的域的安装过程中自动完成的,但也可以从wp-config.php 通过将值设置为WP_HOMEWP_SITEURL 常量。

当代理发出请求时,您需要做的是以不同的方式设置contants。您的wp配置中应该有。php类似

if (request is comming from the proxy) {
  define(\'WP_HOME\', \'http://www.revproxy.com\'); 
  define(\'WP_SITEURL\', \'http://www.revproxy.com\');
}
这将解决wordpress API生成的所有URL的问题,但您仍然需要代码将内容中的链接转换为“相对”链接,或根据WP_HOME

结束

相关推荐

Redirect if not logged in?

我尝试过将未登录的用户重定向到特定页面。最终,他们访问的前端页面应该无关紧要,但应该重定向到选择作为登录页面的任何页面(我假设这是wp\\U重定向中的URL)。我仍然需要访问wp登录和仪表板等。。。我在函数中放置了以下代码。php,但不起作用。function my_redirect() { if ( $_SERVER[\'HTTP_HOST\'].$_SERVER[\'REQUEST_URI\'] == \'mybigfatsite.com/\' ) { if (