如何在不同的子域上运行Wordpress管理员?

时间:2010-07-29 22:50:14

标签: php wordpress https

我需要通过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可以做到这一点吗?

5 个答案:

答案 0 :(得分:1)

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

http://codex.wordpress.org/Administration_Over_SSL

答案 1 :(得分:1)

你有没有看过this thread?它是WordPress HTTPS插件上的mod。

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

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

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

答案 4 :(得分:0)

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

...在HTTPS apache虚拟主机上使用mod_proxy转发流量,确保ProxyPreserveHost为Off,以便将代理语句中的主机名发送到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/