尝试访问Apache代理后面存在的Wordpress页面时出现404错误,其他所有页面均在其中运行

时间:2018-11-21 20:49:36

标签: wordpress apache http-status-code-404 proxypass

全部-

这是我正在查看的方案。我有一个网站www.mycompany.com,这是我们的应用程序。这是一个基于Web的程序,用户可以登录并正常运行。我们在Wordpress中有一个营销网站,网址为about.mycompany.com。该网站本身可以正常运行。

我已被管理层指示要拥有Wordpress网站,而不是作为一个单独的网站成为我们当前网站的“子目录”。因此,我正在努力使服务器协同工作,以便您访问www.mycompany,com / about时,它将显示我们的Wordpress网站。

以下是每个服务器的配置信息:

www.mycompany.com.conf 文件:

<VirtualHost *:80>
    Redirect / https://www.mycompany.com
    ServerName www.mycompany.com
    DirectoryIndex index.php index.html
    DocumentRoot /var/sites/prod1
    ServerAdmin myaddress@mycompany.com
    ServerAlias mycompany.com

    <Directory />
        AllowOverride all
        Require all granted
    </Directory>

</VirtualHost>

<VirtualHost *:443>
    ServerName www.mycompany.com
    DirectoryIndex index.php index.html
    DocumentRoot /var/sites/prod1
    ServerAdmin myaddress@mycompany.com
    ServerAlias mycompany.com

    <Directory />
        AllowOverride all
        Require all granted
    </Directory>

    ProxyPreserveHost On
    ProxyRequests Off

    SSLProxyEngine on
    SSLProxyVerify none
    SSLProxyCheckPeerCN off
    SSLProxyCheckPeerName off
    SSLProxyCheckPeerExpire off

    ProxyTimeout 2400
    ProxyBadHeader Ignore

    ProxyPass /about https://about.mycompany.com
    ProxyPassReverse /about https://about.mycompany.com

    SSLEngine on
    SSLCertificateKeyFile /var/keys/www.mycompany.com.key
    SSLCertificateFile /var/keys/www.mycompany.com.crt

</VirtualHost>

about.mycompany.com.conf 文件:

 <VirtualHost *:80>
    Redirect / https://about.mycompany.com/
    ServerName about.mycompany.com
    DirectoryIndex index.php index.html
    DocumentRoot /var/sites/about
    ServerAdmin myaddress@mycompany.com

    <Directory />
        AllowOverride all
        Require all granted
    </Directory>

</VirtualHost>

<VirtualHost *:443>
    ServerName about.mycompany.com
    DirectoryIndex index.php index.html
    DocumentRoot /var/sites/about
    ServerAdmin myaddress@mycompany.com

    <Directory />
        AllowOverride all
        Require all granted
    </Directory>

    ProxyPreserveHost On
    ProxyRequests Off

    SSLProxyEngine on
    SSLProxyVerify none
    SSLProxyCheckPeerCN off
    SSLProxyCheckPeerName off
    SSLProxyCheckPeerExpire off

    ProxyTimeout 2400
    ProxyBadHeader Ignore

    ProxyPass /about https://about.mycompany.com
    ProxyPassReverse /about https://about.mycompany.com

    SSLEngine on
    SSLCertificateKeyFile /var/keys/about.mycompany.com.key
    SSLCertificateFile /var/keys/about.mycompany.com.crt

</VirtualHost>

我还创建了一个'cors-access.conf'文件,以允许域之间进行通话:

Header set Access-Control-Allow-Origin "*"

MySQL在第二台计算机上,该计算机的端口3306已打开,并且可以正常访问。 WordPress本身似乎运行良好,所以我认为这不是问题。

重要的是: -我正在使用自签名证书进行此测试。我没有遇到任何与安全性有关的错误,但为以防万一。 -我在CentOS 7.5(1804)上使用Apache 2.4.6-80。 -当我在使用这些机器时,它们不对Internet开放。他们(包括我的客户端)已在各自的主机文件中输入了IP地址,以便进行解析,以使测试不受控制。

我以以下方式配置了Wordpress:
WordPress地址(URL)-https://about.mycompany.com
网站地址(URL)-https://www.mycompany.com/about
为“帖子名称”设置了永久链接

除以下内容外,几乎所有页面都可以正常访问: https://www.mycompany.com/about/about-us/ 这给了我一个404错误。

我已经查看了Wordpress,页面在那里,所以并不是那么简单。我也已重置并重新打开了我的永久链接,以解决该问题,并且两者之间也没有区别。

我确实怀疑(而且我不确定我是否在执行Proxy / ReverseProxy错误或其他事情),是ProxyPass / ProxyPassReverse的“ / about”和“ “关于我们”中的“关于”。这是为什么我怀疑问题在这里的原因:

  • 当我将“ about-us”页面的永久链接修改为不以字符串“ about”开头的任何内容(例如“ us-about”或“ ab0ut-us”)时,我可以使页面正常工作。 / li>
  • 我还可以确定,并非只是该页面的行为不正常。我以为页面上隐藏了某些隐藏在后台的东西,我不知道是什么原因导致的,所以我创建了一些全新的页面,称为“关于测试”(创建了“关于测试”的永久链接)和“大约2”(永久链接为“大约2”),这些页面也引发了404错误。

我猜我需要在某种地方放一些'RewriteCond'或'RewriteRule',这样'about'不会被处理两次(或正在发生的任何事情),但是我不确定。

如果需要任何其他信息/说明,请询问,否则任何指示或建议将不胜感激!

谢谢你,
查尔斯

编辑-

我的声誉仍然很低,无法直接回复您的评论,Orlando P.,所以这是我的回复。

您提出了一个很好的问题,我很高兴澄清/扩大。最终将要发生的事情是,我们的www.mycompany.com服务器将位于运行多个服务器的负载平衡器之后。我不想将WordPress与那些服务器在同一台机器上运行(保持减少文件计数的需要),我想将WordPress卸载到单独的服务器上,因为它几乎不需要应用服务器所需要的处理能力。

我的执行团队强加给我的另一个限制是,他们不希望我们的营销网站位于“ about.mycompany.com”上,但是他们愿意允许使用“ www。”。 mycompany.com/about”。所以我的想法是在单独的服务器上设置“ about.mycompany.com”,然后使用代理重定向到另一台服务器。

您是否有建议/地方,可以指出我可以使用其他方法的位置,而不是代理我可以执行的操作?我正在研究Apache中的“位置”指令,以查看是否可以使用它来实现相同的目标,但是如果您有任何建议,请将其扔在那里。谢谢!

0 个答案:

没有答案