2016-04-11 20 views
1

我試圖阻止對Web服務器上所有網站的wp-login.php和xmlrpc.php的訪問。我想在apache級別執行此操作,而不是htaccess。想要在apache級別封鎖用戶代理,而不是htaccess

我在apache的conf.d中有一個文件,但是在做CURL測試時它仍然顯示頁面。

<Files ~ "^(wp-login|xmlrpc)\.php"> 
     order allow,deny 
     allow from all 
     SetEnvIf User-Agent - bad_user 
     Deny from env=bad_user 
</Files> 

有人知道我錯了嗎?

+0

你的配置似乎是正確的。你使用的是什麼curl命令?試試這個'curl -I -H「用戶代理: - 」domain.com/wp-login.php「這應該返回403禁止。 – nidhi

+0

@nidhi我正在使用curl -A「 - 」domain/wp-login.php。仍然得到200響應。與您的curl命令相同的結果 –

+0

正在使用的curl命令很好,配置也是正確的。您可以將這些行放在文件'httpd.conf'或'directory conf.d'下的'xxxxx.conf'文件中。請注意,**文件的擴展名應該是.conf。**另外,請記住重新啓動apache以使更改生效。 – nidhi

回答

1

感謝@nidhi的幫助。這裏的答案是使用以下在Apache conf.d文件是:

SetEnvIf User-Agent "^-$" bad_user 
SetEnvIf User-Agent "^$" bad_user 
<Files ~ "^(wp-login|xmlrpc)\.php"> 
     order allow,deny 
     allow from all 
     Deny from env=bad_user 
</Files> 

的代碼將阻止爲空或只是一個連字符的任何用戶代理 - 這是試圖訪問WP-登錄() .php或xmlrpc.php 請確保您將該文件命名爲zzzz_blockua.conf,以便apache最後加載該文件。

這將有助於減少您的服務器上的負載,因爲點擊這些頁面的機器人不會佔用php/mysql進程,並且apache只會返回403錯誤。

它會影響服務器上的所有網站,所以如果你有一個共享的主機服務器,你並不需要使用htaccess的每個站點

相關問題