.htaccess 是一个 Apache 下的配置文件,90% 以上的国内虚拟主机都使用本教程。此配置文件可以让你可以控制该路径下的文件及文件夹,以及所有子目录。

对于许多 WordPress 使用者来说,他们第一次看到 .htaccess 文件应该是在自定他们网站的固定网址时。为了使用更美观的链结,而不是预设的链接格式(例如:http://free.com.tw/sample-post/而不是 http://free.com.tw/?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 文件在服务器上可写入的,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 和 Maintenance 相当实用,当你在维护网站或更新网站时,可以显示一个暂时的页面给使用者。不幸的是,这类插件只有在你的网站运行正常时才起得了作用。

如果你想未雨稠繆,我建议你建立一个基本的 .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 裡的图片。

希望以上的 .htaccess 文件技巧对你有所助益。

 

译文来自 免费资源网络社群

本文参考资料为 WordPress Htaccess Tips And Tricks,原作者 Kevin Muldoon

# # #

分享此文: 微信 新浪微博 QQ
上一篇

WordPress 教程:jQuery 实现评论作者链接新窗口打开

下一篇

WordPress 教程:使用自定义字段给日志单独加载 JS 脚本

发表评论