使用Apache虚拟主机和不同的端口阻止对wp-admin和wp-login.php的访问

我有一个运行WordPress的站点,在监听端口80( www.example.com )的虚拟主机中定义。

我想阻止访问/ wp-adminwp-login.php的用户,但是当他们查看不同的端口(如www.example.com:8080/wp-adminwww.example.com:8080/wp-login.php

我添加了一些RewriteRules来显示一个404错误页面,当他们点击80端口的站点,并创build一个新的虚拟主机,同样的网站,在端口8080监听,如下所示:

 <VirtualHost 192.168.3.20:80> Options -Indexes +FollowSymlinks RewriteEngine on RewriteRule ^/wp-login.php /wp-content/themes/404.html [R=404,NC] RewriteRule ^/wp-admin$ /wp-content/themes/404.html [R=404,NC] DocumentRoot /var/www/html/wordpress ServerName www.example.com </VirtualHost> <VirtualHost 192.168.3.20:8080> DocumentRoot /var/www/html/wordpress ServerName www.example.com </VirtualHost> 

当访问/ wp-adminwp-login.php时,它很好的显示错误404。 当通过www.example.com:8080/wp-adminwww.example.com:8080/wp-login.php访问时,它会按照预期显示login页面,但在input凭证并按Enter键继续之后,将显示我在80端口为虚拟主机声明的错误404页面,这是我不想要的,经过很多testing,我无法避免它。

有没有人有如何解决它的想法? 也许我正在尝试一个错误的方法呢?

我很抱歉地说,我担心你所尝试的不可能与WordPress。 在您的网站设置中,您定义了您的WordPress所在的URL – http://www.domain.com/ 。 符合W3C规范的WordPress始终使用其设置中提供的完整主机名来实现其redirect,因此,当您login并validation您的凭据时,它会将您redirect到http://www.domain.com/wp -admin ,无论你是在端口80,端口8080还是端口56348进来。当我尝试在另一个端口上设置我的WP博客的精确镜像来testing主题和插件开发时,我自己遇到了同样的问题。

要为您的网站的pipe理页面添加额外的安全性,您可以尝试几件事情:

  1. 保持wp-login.php页面仅在端口8080上可用,但是您必须允许在端口80上访问wp-admin。
  2. 如果我没有弄错,可以将WordPress设置为需要pipe理部分的HTTPS,然后使用404规则在端口80上阻止它。这与您试图直接尝试完成的效果相同访问wp-admin或wp-login.php,然而点击博客上的网站pipe理button的用户很可能会直接转到HTTPS wp-login.php。
  3. 结合上述两者之一,您可以使用Apache HTTP Digestauthentication添加一个额外的密码(不要使用Basic)。 这就要求用户访问WPpipe理员了解(或破解)两个单独的密码。