【问题标题】:How to run Wordpress admin on a different subdomain?如何在不同的子域上运行 Wordpress 管理员?
【发布时间】:2011-03-23 00:11:11
【问题描述】:

我需要通过 https 运行 Wordpress 管理员。 我们使用 CDN 为站点提供缓存内容,但 CDN 不能接受安全流量(每个 IP 只允许一个 SSL 证书,我们在其上运行多个站点)。我无法控制 httpS://www.mysite.com/. 的重定向

我想要:

http://www.mysite.com/blog/
httpS://secure.mysite.com/blog/wp-admin/
httpS://secure.mysite.com/blog/wp-login.php

我已尝试按照文章http://codex.wordpress.org/Administration_Over_SSL#Virtual_Hosts 中的建议重写网址。

假设您可以使用具有不同名称的主机,例如 wpadmin.mysite.com

不幸的是,按照建议尝试这个仍然会将我发送到httpS://www.mysite.com/blog/login.php

# No matter what it redirects to the wrong subdomain for login.php
http://www.mysite.com/blog/wp-admin/
-> httpS://secure.mysite.com/blog/wp-admin/
-> httpS://www.mysite.com/blog/wp-login.php.

另外,当直接访问 css 文件时,仍然链接到错误的 url (.)

简单的解决方案是从http://blog.mysite.com/blog/ 运行博客。不幸的是,出于 SEO 的原因,已经尝试过并决定反对。

Wordpress 是否可以做到这一点?

【问题讨论】:

  • 如果我没记错的话,WP 有一个 db 条目,它命名管理面板所在的域,当您登录并转到管理面板时,它会将您重定向到该域。运行测试实例时,让它们保持正常可能会很痛苦。

标签: php wordpress https


【解决方案1】:

不太确定您是否看过这篇文章,但它非常全面地介绍了基于 SSL 的 Wordpress Admin。向下滚动到关于虚拟主机的部分,那里有关于将 wp-admin 设置为子域的信息。

http://codex.wordpress.org/Administration_Over_SSL

【讨论】:

  • 是的 - 我试过了。我已经更新了问题以反映我在 login.php 中遇到的问题。
【解决方案2】:

如果您使用 Apache 通过 SSL 提供服务,请查看 mod_proxy

使用它,您可以透明地将所有请求从https://secure.mysite.com/blog/ 重定向到http://www.mysite.com/blog/

【讨论】:

  • 我已经在运行 mod_proxy 并且正在这样做。不幸的是,wordpress 强制将网址设为https://www.mysite.com/
  • 检查ProxyPreserveHost 指令。你需要打开它。之后,您需要将 ServerAlias secure.mysite.com 添加到 WP vhost 配置中。作为最后的手段,你可以破解 WP 来做你需要的事情。谷歌搜索揭示了一些 HOWTO。
【解决方案3】:

插件http://wordpress.org/extend/plugins/admin-ssl-secure-admin/ 正是我所追求的。

不幸的是,它在较新的 Wordpress 版本上被破坏了:(

【讨论】:

    【解决方案4】:

    你看过this thread吗?它是WordPress HTTPS 插件上的一个模组。

    【讨论】:

    • 今天有时间试试这个插件,它(wordpress-https v2.0.4 for wordpress v3.3.1)完全符合我的要求!感谢您查看旧线程。
    【解决方案5】:

    使用纯 Apache 配置启用 http://blog.example.comhttps://ssl.example.com/wp-admins/blog/wp-login.php 的管理员访问权限,这样您就无需依赖 Wordpress 插件和您可能想要的更新...

    ...在 HTTPS apache 虚拟主机上使用 mod_proxy 来转发流量,确保 ProxyPreserveHost 处于关闭状态,以便将代理语句中的主机名发送到 wordpress 服务器。然后使用 mod_substitute(确保打开它)来修复从 wordpress 返回的断开的链接。

    <Location /wp-admins/blog/>
    
      AddOutputFilterByType SUBSTITUTE text/html
      AddOutputFilterByType SUBSTITUTE text/css
      AddOutputFilterByType SUBSTITUTE application/javascript
      AddOutputFilterByType SUBSTITUTE application/json
      Substitute "s|http://blog.example.com|https://ssl.example.com/wp-admins/blog|i"
      Substitute "s|blog.example.com\\\/|blog.example.com\\/wp-admins\\/blog\\/|i"
      Substitute "s|'/wp-admin|'/wp-admins/blog/wp-admin|i"
      Substitute "s|\"/wp-admin|\"/wp-admins/blog/wp-admin|i"
      Substitute "s|'/wp-includes|'/wp-admins/blog/wp-includes|i"
      ProxyPassReverseCookiePath / /wp-admins/blog/
    
    </Location>
    
    ProxyPass /wp-admins/blog/ http://blog.example.com/
    ProxyPassReverse /wp-admins/blog/ http://blog.example.com/
    

    要使反向代理正常工作,您需要指定托管 blog.example.com 的服务器的内部 IP。即使上游服务器 (10.0.0.4) 有多个基于名称的虚拟主机,此解决方案也能确保它能够正常工作。

    10.0.0.4 blog.example.com
    

    更多详情见:

    http://tec.libertar.se/how-to-host-wordpress-admin-on-a-seperate-domain-and-subfolder/

    【讨论】:

      猜你喜欢
      • 2019-02-26
      • 2021-04-03
      • 1970-01-01
      • 2015-08-21
      • 2011-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-25
      相关资源
      最近更新 更多