.htaccess 是一个设定档,让你可以控制该路径下的档案及资料夹,以及所有子目录。这个档案名称是由hypertext access 而来,能为大多数的服务器环境使用。
对于许多 WordPress 使用者来说,他们第一次看到 .htaccess 档案应该是在自定他们网站的固定网址时。为了使用更美观的链结,而不是预设的链结格式(例如:http://aaa.com/post/
而不是 http://aaa.com/?p=123 ),我们必须将以下程式码加入 .htaccess 档案:
# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress
如果 .htaccess 不存在,你可以自己建立一个然后将它上传。你需要做的只有建立一个空白的文字档,将它储存为 .htaccess 然后上传到网站的根目录。请确认在档案的开头有一个点,是不可漏掉的。
你也必须确认你的 .htaccess 档案是服务器可写入的,WordPress 才能将适当的程式码加入你的 .htaccess 。WordPress.org 建议把档案权限设定为 644 。
.htaccess 档案不仅用于固定网址,该档案也能强化网站安全。数以百万的 WordPress 用户利用它来保护网站免于垃圾邮件发送者、黑客和其他已知的威胁。
在本文裡,我会分享一些用于 .htaccess 的程式码片段,可以强化你的网站安全。相信你会找到一些对你有帮助的程式码。
你可能也注意到上面固定网址的 .htaccess 程式码是包覆于 #BEGIN WordPress 及 #END WordPress 裡。WordPress 可以更新这个标签裡的程式码,你必须把要新增的程式码片段放置于你的 .htaccess
档案的顶部或底部(在 #BEGIN WordPress 之前或 #END WordPress 之后)。
请注意…
.htaccess 是 WordPress 裡个性倔强的档案,只要其中任何一个字符出错,档案就会出现错误。当错误发生时,它通常会影响到整个网站的运作,最重要的是你必须确保输入 .htaccess 的程式码没有
问题。
在开始前,备份一下你当前使用的 .htaccess 档案吧!将它保存到你电脑裡安全的位置。如果可以,也能在云端硬碟备份一份。
无论何时更新了你服务器上的 .htaccess 档案,记得回到网站重新整理一下,看看网站是不是还能正常运作。不要跳过这个步骤,因为确认网站运作正常是至关重要的一个步骤。如果你的网站给你一个
白画面,立即回復、还原 .htaccess 修改前的上个步骤。
如果你无法还原你的备份,那麼将服务器上的 .htaccess 删除,然后建立一个空白的 .htaccess 档案并将它上传。这将协助你使你的网站回復连线;当你的网站出现问题,这显然是最重要的一步。
1. 保护 .htaccess
既然 .htaccess 拥有你整个网站的控制权,保护它远离不相关人士就显得很重要。以下的程式码将让黑客无法存取你的 .htaccess 档,只需要透过 FTP 来修改 .htaccess 档案(或是控制台的档案管
理)。
order allow,deny
deny from all
satisfy all
2. 保护 WP-Config.php
另一个重要的档案是 wp-config.php。这个档案裡包含资料库的登入资讯,以及其他的系统设定。因此,明确的作法是禁止任何人访问它。
order allow,deny
deny from all
3. 保护 /Wp-Content/
wp-content 资料夹也是 WordPress 相当重要的一部分,在这个资料夹裡包含了你的佈景主题、外掛、上传的媒体档案(图片、影片)及快取档案。
有鉴于此,这通常也是黑客下手的目标。当垃圾邮件发送者试图破坏你的老网站,他必须将邮件程式传到你的上传资料夹。然后使用你的服务器来寄送垃圾邮件;这麼做会使你的服务器被列入垃圾邮件名单。
你可以透过创建一个独立的 .htaccess 档案来解决类似问题:
Order deny,allow
Deny from all
Allow from all
你必须将 .htaccess 档案独立上传到 wp-content 主目录,例如 www.yourwebsite.com/wp-content/。这麼做只会允许 XML、CSS、JPG、JPEG、PNG、GIF 和 JavaScript 被上传到媒体资料夹,其餘的
档案类型将被拒绝。
4. 保护 Include-Only 档案
某些档案是绝不用让使用者存取的。你可以加入以下程式码,来阻挡使用者存取这些档案:
# Block the include-only files.
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]
5. 限制存取 WordPress 控制台
另一个黑客觊觎的目标是 WordPress 控制台。如果他们获取了存取该区域的权限,他们就可以在你的网站上为所欲为。
确保 WordPress 控制台更加安全,建立一个 .htaccess 档案并加入以下程式码:
# Limit logins and admin by IP
order deny,allow
deny from all
allow from 12.34.56.78
请务必将 12.34.56.78 更改为你的 IP 位址(你可以在 What is My IP? 找到你的 IP Address),然后将它上传到网站的 /wp-admin/ 路径下,例如 www.yourwebsite.com/wp-admin/ 。
只有你能够存取 WordPress 控制台,其他人将会被阻挡在外。
其他的管理员或作者的 IP 可以加在后面,你可以在 allow from 后面加入其他 IP,不同的 IP 间使用半形逗号来区隔,例如:
allow from 12.34.56.78, 98.76.54.32, 19.82.73.64
6. 禁止某人进入你的网站
如果你知道某个来者不善的 IP 位址,你可以使用以下的程式码将它拒于网站之外。举例来说,你可以封锁某些留下垃圾留言或是尝试存取你 WordPress 控制台的使用者。
order allow,deny
deny from 123.456.78.9
deny from 987.654.32.1
allow from all
7. 将使用者传送到维护页面
一些维护外掛像是 Ultimate Maintenance Mode 和 Mainteance 相当实用,当你在维护网站时,可以显示一个暂时的页面给使用者,或是在你更新网站时。
不幸的是,维护外掛只有在你的网站运作正常时才起得了作用。
如果你想未雨稠繆,我建议你建立一个基本的 .html 页面,将它命名为 maintenance.html 来提醒使用者目前网站遭遇一些问题,但会在短时间内恢復连线。当你的网站掛掉时,只要将以下程式码加入
你的 .htaccess 档案,就能将所有流量引导至维护画面。
RewriteEngine on
RewriteCond REQUEST_URI} !/maintenance.html$
RewriteCond REMOTE_ADDR} !^123.123.123.123
RewriteRule $ /maintenance.html [R=302,L]
你必须要为你的网站来自定上方程式码。变更上方的档案名称,来符合你的维护页面路径,你也必须加入你的 IP 位址,以便在维护状态时不会被引导至维护页面(让你可以继续调整网站),以上代码
使用 302 转址确保维护页面不会被搜寻引擎索引。
8. 禁止浏览目录
让未经授权的使用者浏览目录下的档案或资料夹是相当危险的一件事情。如要禁止访问你网站的目录,只要在你的 .htaccess 加入以下程式码即可:
# disable directory browsing
Options All -Indexes
9. 允许浏览器快取
当啟动浏览器快取功能后,将允许使用者从你的网站储存元件,而无须重新下载。
它用于设计元素,例如 CSS 样式表和其它媒体内容,例如图片。这是一个实用的技巧,因为当图片上传到网站后,很少会再次更新。浏览器快取能让访客直接读取储存在他们电脑裡的图片,而不用从你
的服务器下载,节省频宽、也提升了页面载入速度。
啟用浏览器快取,你需要做的就是把以下程式码加入 .htaccess 档案:
## EXPIRES CACHING ##
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"
## EXPIRES CACHING ##
10. 重新导向一个网址
301 重新导向让你可以通知搜寻引擎该链结已经重新移到新的路径。它可以被用来重新导向一个网址、资料夹,甚至是一整个网站。
因此,它常被用于网址发生变化时,例如变更网域名称、变更固定网址结构,或是变更页面名称(例如将页面名称从 my-news 变成 mygreatnews)。
要重新导向某个路径,你需要做的就是加入以下程式码:
Redirect 301 /oldpage.html http://www.yourwebsite.com/newpage.html
Redirect 301 /oldfolder/page2.html /folder3/page7.html
Redirect 301 / http://www.mynewwebsite.com/
11. 禁止直接连结图片
直接连结的意思是某人直接取用你的图片链结,然后将它分享到其他网页上。这常发生在讨论区,但大多数的网站拥有者仍然会这麼做。直接连结可能对你的网站带来负面影响,包括使你的网站变慢,
也会让你的频宽费用增加。
你可以禁止除了你的网站外的网站直接连结图片,将以下程式码加入即可。请确认将以下网址更改为你的网址。
RewriteEngine on
RewriteCond HTTP_REFERER} !^$
RewriteCond HTTP_REFERER} !^http(s)?://(www.)?yourwebsite.com [NC]
RewriteCond HTTP_REFERER} !^http(s)?://(www.)?yourotherwebsite.com [NC]
RewriteRule .(jpg|jpeg|png|gif)$ http://upload.chinaz.com/2014/0718/1405671492557.png [NC,R,L]
当其他人试图从其他网址浏览你的图片时,他们将会看到禁止图片,而这图片可以变更为任何你想要的图(在上面的最后一行设定图片路径)。
禁止直接连结可能导致一些 RSS 阅读器无法显示你 RSS Feed 裡的图片。