Apache-2.2

使用 Apache 虛擬主機和不同埠阻止對 wp-admin 和 wp-login.php 的訪問

  • September 4, 2017

我有一個執行 WordPress 的站點,該站點定義在一個虛擬主機中,監聽埠 80 ( www.example.com)。

我想阻止人們訪問**/wp-adminwp-login.php**,但是當他們查看不同的埠時允許訪問,例如www.example.com:8080/wp-adminwww.example.com:8080/wp-login.php

我添加了一些 RewriteRules 以在它們訪問埠 80 的站點時顯示 404 錯誤頁面,並為偵聽埠 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-adminor訪問時www.example.com:8080/wp-login.php,它按預期顯示登錄頁面,但在輸入憑據並按 Enter 繼續後,它顯示為埠 80 處的虛擬主機聲明的錯誤 404 頁面,這就是我不想要的經過大量測試後,我無法避免。

有人知道如何解決它嗎?也許我嘗試了錯誤的方法?

很抱歉,我擔心您正在嘗試的內容無法使用 WordPress。在您的站點設置中,您定義了 WordPress 所在的 URL - http://www.domain.com/。WordPress 符合 W3C 規範,始終使用其設置中提供的完整主機名實現其重定向,因此當您登錄並驗證您的憑據時,它會將您重定向到http://www.domain.com/wp -admin,無論您是使用埠 80、埠 8080 還是埠 56348。當我嘗試在不同的埠上設置我的 WP 部落格的精確鏡像以測試主題和外掛開發時,我自己也遇到了同樣的問題。

要為您網站的管理頁面增加額外的安全性,您可以嘗試以下方法:

  1. 保持 wp-login.php 頁面僅在埠 8080 上可用,但您必須允許 wp-admin 在埠 80 上訪問。
  2. 如果我沒記錯的話,您可以將 WordPress 設置為管理部分需要 HTTPS,然後使用您的 404 規則在埠 80 上阻止它。這與您嘗試為嘗試直接完成的人所做的效果相同訪問 wp-admin 或 wp-login.php,但是點擊您部落格上的站點管理按鈕的人很可能會直接被帶到 HTTPS wp-login.php。
  3. 結合上述任一方法,您可以使用 Apache HTTP Digest 身份驗證添加額外的密碼(不要使用 Basic)。然後,這需要訪問您的 WP 管理員的使用者知道(或破解)兩個單獨的密碼。

引用自:https://serverfault.com/questions/262165