15個有用的WordPress .htaccess 代碼片段

如果您想提高安全性并減少?WordPress網站上的漏洞,那么擁有一個配置良好的.htaccess文件至關重要。通常,創建自定義.htaccess文件的主要目的是防止您的網站被黑客入侵,但它也是處理重定向和管理緩存相關任務的絕佳方式。

推薦閱讀《網站管理員和Web開發人員.htaccess入門指南

.htaccess是Apache Web服務器上使用的配置文件。大多數WordPress站點都在Apache服務器上運行,盡管其中一小部分由Nginx提供支持。在本文中,您可以找到.htaccess代碼片段的集合,其中大部分可用于保護您的網站,而其余代碼片段實現其他有用的功能。

不要忘記在編輯之前備份.htaccess文件,以便在出現問題時始終可以返回到以前的版本。

如果你是一個不喜歡觸摸配置文件的人,我推薦你使用BulletProof Security插件,它是市場上最可靠(也可能是最老的)免費.htaccess安全插件

創建 WP 默認的 .htaccess

.htaccess基于每個目錄工作,這意味著每個目錄都可以擁有自己的.htaccess文件。很可能你的WordPress網站還沒有.htaccess文件。如果在根目錄中找不到.htaccess文件,請創建一個空文本文件并將其命名為.htaccess

下面,您可以找到WordPress使用的默認.htaccess。無論何時需要此代碼,您都可以在WordPress Codex中快速查找。請注意,WP Multisite(多站點)有一個不同的.htaccess 。

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

# 開頭的行是注釋。不要編輯任何# BEGIN WordPress# END WordPress之間的代碼。在這些默認規則下添加自定義.htaccess 規則

有用的.htaccess代碼

你可以在本文中找到的所有代碼段,然后添加到根目錄的核心.htaccess文件

1.拒絕訪問所有.htaccess文件

下面的代碼拒絕訪問你WordPress中的所有.htaccess文件。這樣,您可以阻止別人查看你的Web服務器配置

# Denies access to all .htaccess files
<Files ~ "^.*\.([Hh][Tt][Aa])">
Order Allow,Deny
Deny from all
Satisfy all
</Files>

2.保護你的WP配置文件

wp-config.php文件包含所有WP配置,包括數據庫登錄名和密碼。您可以拒絕所有人或允許管理員訪問它

如果你選擇后者,去除# Allow from xx.xx.xx.xxx 前面的 # ,并插入管理員的IP地址來代替xx.xx.xx.xxx

# Protects wp-config
<Files wp-config.php>
Order Allow,Deny
# Allow from xx.xx.xx.xxx
# Allow from yy.yy.yy.yyy
Deny from all
</Files>

3.防止XML-RPC DDoS攻擊

WordPress 默認支持XML-RPC,這是一個使遠程發布接口。然而,雖然它是一個很棒的功能,但它也是WP最大的安全漏洞之一,因為黑客可能利用它來進行DDoS攻擊

如果您不想使用此功能,最好禁用它。和以前一樣,你可以通過去除# Allow from xx.xx.xx.xxx前面的 # 和添加管理員(或多個)的IP地址。

# Protects XML-RPC, prevents DDoS attack
<FilesMatch "^(xmlrpc\.php)">
Order Deny,Allow
# Allow from xx.xx.xx.xxx
# Allow from yy.yy.yy.yyy
Deny from all
</FilesMatch>

4.保護網站后臺

通過僅向管理員提供訪問權限來保護網站后臺也是一個好主意。在這里,不要忘記添加至少一個“允許”例外IP,否則您根本無法訪問網站后臺。

注:如果你的寬帶沒有固定的IP,請務必不要設置,否則你可能無法訪問網站后臺!

# Protects admin area by IP
AuthUserFile /dev/null
AuthGroupFile /dev/null
AuthName "WordPress Admin Access Control"
AuthType Basic
<LIMIT GET>
Order Deny,Allow
Deny from all
Allow from xx.xx.xx.xxx
Allow from yy.yy.yy.yyy
</LIMIT>

5.阻止目錄列表

大多數WordPress網站不會禁用目錄列表,這意味著任何人都可以瀏覽其文件夾和文件,包括媒體上傳和插件文件。不用說,這是一個巨大的安全漏洞。

下面,你可以看到典型的WordPress目錄列表的外觀

幸運的是,您只需要一行代碼就可以阻止此功能。此代碼段將向想要訪問您的目錄的任何人返回403錯誤消息

# Prevents directory listing
Options -Indexes

6.防止用戶名枚舉

如果啟用了WP永久鏈接,則使用作者存檔枚舉用戶名非常容易。然后,顯示的用戶名(包括管理員的用戶名)可用于暴力攻擊

將下面的代碼插入.htaccess文件以防止用戶名枚舉

# Prevents username  enumeration
RewriteCond %{QUERY_STRING} author=d
RewriteRule ^ /? [L,R=301]

7.阻止垃圾郵件發送者和機器人

有時你可能希望限制某些IP地址的訪問。此代碼段提供了一種簡單的方法來阻止你已經知道的垃圾郵件發送者和機器人。

# Blocks spammers and bots
<Limit GET POST>
Order Allow,Deny
Deny from xx.xx.xx.xxx
Deny from yy.yy.yy.yyy
</Limit>
Allow from all

8.防止圖片盜鏈

雖然不是安全威脅,但圖片盜鏈仍然是一件煩人的事情。人們不僅在未經您許可的情況下使用你的圖片,可能會導致你的帶寬費用支出。使用這幾行代碼,您可以保護你的網站被盜鏈圖片。

# Prevents image hotlinking
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourwebsite.com [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourwebsite2.com [NC]
RewriteRule \.(jpe?g?|png|gif|ico|pdf|flv|swf|gz)$ - [NC,F,L]

9.限制對插件和主題PHP文件的直接訪問

如果有人直接調用您的插件和主題文件,無論是意外發生還是惡意攻擊者,都會很危險。此代碼段來自Acunetix網站安全公司 ; 您可以在他們的博文中閱讀有關此漏洞的更多信息。

# Restricts access to PHP files from plugin and theme directories
RewriteCond %{REQUEST_URI} !^/wp-content/plugins/file/to/exclude\.php
RewriteCond %{REQUEST_URI} !^/wp-content/plugins/directory/to/exclude/
RewriteRule wp-content/plugins/(.*\.php)$ - [R=404,L]
RewriteCond %{REQUEST_URI} !^/wp-content/themes/file/to/exclude\.php
RewriteCond %{REQUEST_URI} !^/wp-content/themes/directory/to/exclude/
RewriteRule wp-content/themes/(.*\.php)$ - [R=404,L]

10.設置永久重定向

你可以使用.htaccess 輕松處理永久重定向。首先,你必須添加舊URL,然后按照指向要將用戶重定向到的頁面的新URL

# Permanent redirects
Redirect 301 /oldurl1/ http://yoursite.com/newurl1
Redirect 301 /oldurl2/ http://yoursite.com/newurl2

11.將訪問者發送到維護頁面

如果你的網站在維護,我們希望告知訪客這個事情,可以使用規則去實現。你需要一個單獨的維護頁面maintenance.html在示例中)才能使此.htaccess規則生效。此代碼將你的WordPress站點置于維護模式

# Redirects to maintenance page
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REMOTE_ADDR} !^123\.456\.789\.000
RewriteCond %{REQUEST_URI} !/maintenance.html$ [NC]
RewriteCond %{REQUEST_URI} !\.(jpe?g?|png|gif) [NC]
RewriteRule .* /maintenance.html [R=503,L]
</IfModule>

12.限制對 wp-includes 目錄的所有訪問

/wp-includes/文件夾包含必需的核心WordPress文件。沒有內容、插件、主題或用戶可能想要訪問的任何其他內容。因此,為了加強安全性,最好限制對它的所有訪問

# Blocks all wp-includes folders and files
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^wp-admin/includes/ - [F,L]
RewriteRule !^wp-includes/ - [S=3]
RewriteRule ^wp-includes/[^/]+\.php$ - [F,L]
RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L]
RewriteRule ^wp-includes/theme-compat/ - [F,L]
</IfModule>

13.阻止跨站點腳本(XSS)

以下代碼片段來自WP Mix,它可以保護你的站點免受一些常見的XSS攻擊,即腳本注入和嘗試修改全局和請求變量。

# Blocks some XSS attacks
<IfModule mod_rewrite.c>
RewriteCond %{QUERY_STRING} (\|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
RewriteRule .* index.php [F,L]
</IfModule>

14.啟用瀏覽器緩存

正如我之前提到的,.htaccess不僅有利于安全性和重定向,還可以幫助您管理緩存。下面的代碼片段來自Elegant Themes,它通過允許訪問者保存某些類型的文件使瀏覽器緩存成為可能,因此下次訪問時他們不必再次下載它們。

# Enables browser caching
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access 1 year"
ExpiresByType image/jpeg "access 1 year"
ExpiresByType image/gif "access 1 year"
ExpiresByType image/png "access 1 year"
ExpiresByType text/css "access 1 month"
ExpiresByType application/pdf "access 1 month"
ExpiresByType text/x-javascript "access 1 month"
ExpiresByType application/x-shockwave-flash "access 1 month"
ExpiresByType image/x-icon "access 1 year"
ExpiresDefault "access 2 days"
</IfModule>

15.設置自定義錯誤頁面

你可以使用.htaccess在WordPress網站上設置自定義錯誤頁面。對于這種方法,您還需要創建自定義錯誤頁custom-403.htmlcustom-404.html在本例中),并上傳到你的網站根目錄。

您可以為所需的任何HTTP錯誤狀態代碼(4XX和5XX狀態代碼)設置自定義錯誤頁面。

# Sets up custom error pages
ErrorDocument 403 /custom-403.html
ErrorDocument 404 /custom-404.html

好了,今天就分享這些 .htaccess 代碼片段,如果你有其他不錯的片段,歡迎和我們分享!

參考: https://www.hongkiat.com/blog/useful-htaccess-snippets-for-wordpress/

聲明:本站所有文章,如無特殊說明或標注,均為本站原創發布。任何個人或組織,在未征得本站同意時,禁止復制、盜用、采集、發布本站內容到任何網站、書籍等各類媒體平臺。如若本站內容侵犯了原著者的合法權益,可聯系我們進行處理。
歡迎關注我們的微信公眾號:WPDAXUE

倡萌

一個文科IT宅男,喜歡折騰WordPress和被它折騰 ^_^

暫無評論

發表評論