对于许多 WordPress 使用者来说,他们第一次看到 .htaccess 档案应该是在自定他们网站的固定网址时。为了使用更美观的链结,而不是预设的链结格式(例如:http://zzsa.net/sample-post/ 而不是 http://zzsa.net/?p=123 ),.htaccess 是一个设定档,让你可以控制该路径下的档案及资料夹,以及所有子目录。这个档案名称是由 hypertext access 而来,能为大多数的伺服器环境使用。我们必须将以下程式码加入 .htaccess 档案
# BEGIN WordPress <IfModulemod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$- [L] RewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_FILENAME} !-dRewriteRule . /index.php[L] </IfModule> # END WordPress
.htaccess 的程式码没有问题。 在开始前,备份一下你当前使用的 .htaccess 档案吧!将它保存到你电脑裡安全的位置。如果可以,也能在云端硬碟备份一份。 无论何时更新了你伺服器上的 .htaccess 档案,记得回到网站重新整理一下,看看网站是不是还能正常运作。不要跳过这个步骤,因为确认网站运作正常是至关重要的一个步骤。如果你的网站给你一个白画面,立即回复、还原 .htaccess 修改前的上个步骤。 如果你无法还原你的备份,那麽将伺服器上的 .htaccess 删除,然后建立一个空白的 .htaccess 档案并将它上传。这将协助你使你的网站回复连线;当你的网站出现问题,这显然是最重要的一步。
1. 保护 .htaccess
既然 .htaccess 拥有你整个网站的控制权,保护它远离不相关人士就显得很重要。以下的程式码将让黑客无法存取你的 .htaccess 档,只需要透过 FTP 来修改 .htaccess 档案(或是控制台的档案管理)。
<files~"^.*\.([Hh][Tt][Aa])">order allow,deny deny from all satisfy all</files>
2. 保护 WP-Config.php
另一个重要的档案是 wp-config.php。这个档案裡包含资料库的登入资讯,以及其他的系统设定。因此,明确的作法是禁止任何人访问它。
<files wp-config.php>order allow,deny deny from all</files>
3. 保护 /Wp-Content
/ wp-content 资料夹也是 WordPress 相当重要的一部分,在这个资料夹裡包含了你的佈景主题、外挂、上传的媒体档案(图片、影片)及快取档案。 有鑑于此,这通常也是黑客下手的目标。当垃圾邮件发送者试图破坏你的老网站,他必须将邮件程式传到你的上传资料夹。然后使用你的伺服器来寄送垃圾邮件;这麽做会使你的伺服器被列入垃圾邮件名单。 你可以透过创建一个独立的 .htaccess 档案来解决类似问题:
Orderdeny,allowDeny fromall <Files ~ ".(xml|css|jpe?g|png|gif|js)$"> Allow fromall </Files>
你必须将 .htaccess 档案独立上传到 wp-content 主目录,例如 www.yourwebsite.com/wp-content/。这麽做只会允许 XML、CSS、JPG、JPEG、PNG、GIF 和 JavaScript 被上传到媒体资料夹,其馀的档案类型将被拒绝。
4. 保护 Include-Only 档案
某些档案是绝不用让使用者存取的。你可以加入以下程式码,来阻挡使用者存取这些档案:
# Block the include-only files. <IfModulemod_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>
5. 限制存取 WordPress 控制台
另一个黑客觊觎的目标是 WordPress 控制台。如果他们获取了存取该区域的权限,他们就可以在你的网站上为所欲为。 确保 WordPress 控制台更加安全,建立一个 .htaccess 档案并加入以下程式码:
# Limit logins and admin by IP <Limit GET POST PUT> order deny,allow deny from all allow from 12.34.56.78 </Limit>
请务必将 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 控制台的使用者。
<Limit GET POST> order allow,deny deny from 123.456.78.9 deny from 987.654.32.1 allow from all </Limit>
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 ## <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>
## 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://i.imgur.com/g7ptdBB.png [NC,R,L]