您的位置:首页»WordPress 教程, 进阶使用»  从A到Z 26条 WordPress .htaccess 技巧

从A到Z 26条 WordPress .htaccess 技巧

对于使用 LAMP(Linux+Apache+MySQL+PHP)结构来搭建自己的 WordPress 服务器平台的同学来说,.htaccess 文件再熟悉不过了。合理使用 .htaccess 能极大提高 WordPress 的安全性和易用性。在本篇 WordPress 教程中,我们从A到Z,一起来探讨26条 WordPress .htaccess 技巧。

  1. A:保护 WP- Admin 目录
  2. wp-admin 是 WordPress 管理后台,我们可以限定 IP 访问,不让坏人越雷池一步:

    1
    2
    3
    
    order deny,allow
    allow from a.b.c.d # This is your static IP
    deny from all
  3. B:Blacklist
  4. 绿光荭草小盆友曾非常困惑如何阻止某些 IP 访问其网站,答案就是建立黑名单:

    1
    2
    3
    
    order allow,deny
    allow from all
    deny from 123.456.789 # Change this IP instead that you want to deny
  5. C:保护 WP-Config 文件
  6. WP-Config 文件里存有数据库地址、用户名以及密码等敏感信息,保护起来吧

    1
    2
    3
    4
    
    <files wp-config.php>
    order allow,deny
    deny from all
    </files>
  7. D:Disable Directory Browsing(禁止列目录)
  8. WordPress 有个安全隐患,就是容易被人列目录,主题、插件目录一目了然,自家的菜园子怎能让人想进就进,想出就出呢,安个门儿吧:

    1
    2
    
    # disable directory browsing
    Options All -Indexes
  9. E:Explanation(解释)
  10. 都写了4条 .htaccess技巧了,也许还有同学在犯嘀咕,到底什么是 .htaccess 啊?它都能干什么呢?下面我们一起来看看它的解释吧。
    .htaccess 文件没有确切的解释,笼统的说 .htaccess 是 Apache 服务器的一个非常强大的分布式配置文件。正确的理解和使用 .htaccess 文件,可以帮助我们优化自己的服务器或者虚拟主机。
    启用 .htaccess,需要修改 httpd.conf,启用 AllowOverride,并可以用 AllowOverride 限制特定命令的使用。如果需要使用.htaccess 以外的其他文件名,可以用 AccessFileName 命令来改变。

  11. F:Feedburner
  12. WordPress 自带的 Feed 没有统计功能,我们可以使用 Feedburner 替换它:

    1
    2
    3
    4
    5
    6
    
    <IfModule mod_rewrite.c>
     RewriteEngine on
     RewriteCond %{HTTP_USER_AGENT} !FeedBurner    [NC]
     RewriteCond %{HTTP_USER_AGENT} !FeedValidator [NC]
     RewriteRule ^feed/?([_0-9a-z-]+)?/?$ http://feedproxy.google.com/yourfeedburnerid [R=302,NC,L]
    </IfModule>

    当然,如果你能不介意 Feedsky 的抓取速度的话,国内的朋友可以使用 Feedsky 替换

  13. G:Gzip 压缩 js 和 css
  14. 许多 WordPress 教程都提及如何使用 Gzip 压缩问题,可传统的 Gzip 压缩会耗费一定的 CPU 资源,当 CPU 使用率过高时,Gzip 压缩模式下的网页访问速度可能会更慢。我们可以使用 gzip 将 js 和 css 文件压缩成 .gz 压缩文件,就能很好解决流量、访问速度和服务器 CPU 资源的矛盾问题。

    RewriteRule (.*.css$|.*.js$) gzip.php?$1 [L]

    点击这里下载 gzip.php 文件

  15. H:Disable hotlinking(防止盗链)
  16. 盗链是指别人直接链接你站内资源,比如图片、音乐、电子书等文件,从而浪费网站宝贵的流量,我们可以使用以下 .htaccess 技巧阻止盗链:

    1
    2
    3
    4
    5
    
    RewriteEngine on
    RewriteCond %{HTTP_REFERER} !^$
    RewriteCond %{HTTP_REFERER} !^http://(www\.)?yourdomain.com/.*$ [NC]
    #RewriteRule \.(gif|jpg)$ - [F]
    RewriteRule \.(gif|jpg)$ http://www.yourdomain.com/nohotlink.gif [R,L]

    注:替换 yourdomain.com 为自己的网址和 http://www.yourdomain.com/nohotlink.gif 为自己定制的防盗链声明图片

  17. I:Important(重要性)!
  18. 看了前面几条 .htaccess 技巧,你是不是蠢蠢欲动、跃跃欲试了呢?!别急,先备份,时常备份才能免除后顾之忧。

  19. J:Jauntily show the admin’s email address in error message
  20. 在错误页显示管理员邮箱,以使访问者能及时联系我们。
    ServerAdmin name@domain.com

  21. K:Keep RSS ‘content thieves’ away(防止 RSS 采集)
  22. 我们有很多方法防止垃圾站点采集,可通过 RSS 采集,总是令人防不胜防,幸好,我们还可以通过 .htaccess 技巧,阻止其采集我们的网站内容,只要知道它的 IP 即可。

    1
    2
    3
    
    RewriteEngine on
     RewriteCond %{REMOTE_ADDR} ^123.45.67.89
     RewriteRule ^(.*)$ http://yourdomain.com/feed
  23. L:Limiting number of simultaneous connections(限制并发连接数)
  24. 过高的并发连接数会严重影响服务器性能,我们可以通过设置 .htaccess 适当限制一下,如:
    MaxClients 40

  25. M:Maintenance(维护页面)
  26. 当我们的站点正在升级、迁移时,我们需要做一个维护页面:

    1
    2
    3
    4
    
    RewriteEngine on
    RewriteCond %{REQUEST_URI} !/maintenance.html$
    RewriteCond %{REMOTE_ADDR} !^123\.123\.123\.123
    RewriteRule $ /maintenance.html [R=302,L]

    注:新建一个 maintenance.html 页面,并将 123.123.123.123 替换成你自己的 IP 地址

  27. N:Deny no referer requests
  28. 通过机器人群发垃圾留言是 Spammers 的惯用伎俩,下面这条 .htaccess 技巧将判断评论提交地址,如非本站,则拒绝:

    1
    2
    3
    4
    5
    6
    
    RewriteEngine On
    RewriteCond %{REQUEST_METHOD} POST
    RewriteCond %{REQUEST_URI} .wp-comments-post\.php*
    RewriteCond %{HTTP_REFERER} !.*yourblog.com.* [OR]
    RewriteCond %{HTTP_USER_AGENT} ^$
    RewriteRule (.*) ^http://%{REMOTE_ADDR}/$ [R=301,L]
  29. O:Force files when opening to ’save as’
  30. 如果你经常提供 .avi .mpg .mov 等媒体文件下载,下面这条 .htaccess 非常有用,它将强迫保存文件而不是在线播放。

    AddType application/octet-stream .avi .mpg .mov .pdf .xls .mp4
  31. P:Protect your .htaccess file(保护 .htaccess 文件)
  32. 1
    2
    3
    4
    5
    
    <Files ~ "^.*\.([Hh][Tt][Aa])">
    order allow,deny
    deny from all
    satisfy all
    </Files>
  33. Q:Quicken your site’s loading time by caching
  34. 又是一条通过 gzip 压缩减少页面加载时间的 .htaccess 技巧,文章太长,请点击 .htaccess-gazip and cache your site for faster loading and bandwidth saving 查看

  35. R:Redirect to other pages on your site(重定向博客地址)
  36. 1
    
    RedirectMatch 301 ^/blog/.*$ http://domain.com/target.html
  37. S:Spam
  38. 阻止 spammers、scrapers 以及其他 scumbags 是我们义不容辞的任务,这不,就有人建立了一个 .htaccess 黑名单(实时更新)

  39. T:Set the timezone of the server(设置服务器时区)
  40. SetEnv TZ America/Indianapolis
    请将 America/Indianapolis 设置为大家所在时区即可,时区的列表可以在这里找到: http://us2.php.net/manual/en/timezones.php

  41. U:Remove /category/ from your category URL
  42. 1
    2
    3
    
    RedirectMatch 301 ^/category/(.+)$ http://domain.com/$1
    # OR
    RewriteRule ^category/(.+)$ http://domain.com/$1 [R=301,L]
  43. V:Valiantly automatically fix URL spelling mistakes
  44. 这个 .htaccess 小把戏将为大家自动修正 url 拼写错误:

    1
    2
    3
    
    <IfModule mod_speling.c>
     CheckSpelling On
     </IfModule>
  45. W:Redirect from http://www.whatever to http://whatever
  46. 也许许多同学像站趣一样爱用不带 www 的 url 地址,那么,如果有习惯性输入 www 的访客怎么办?通过 .htaccess 将其重定向过来呗:

    1
    2
    3
    4
    5
    
    # permanently redirect from www domain to non-www domain
    RewriteEngine on
    Options +FollowSymLinks
    RewriteCond %{HTTP_HOST} ^www\.domain\.tld$ [NC]
    RewriteRule ^(.*)$ http://domain.tld/$1 [R=301,L]
  47. X:Make your wp-login.php page xenophobic
  48. wp-login.php 是 WordPress 的登录页面,阻止其他人登录,不就相当于保护了 WordPress 管理后台了么:

    1
    2
    3
    4
    5
    
    <Files wp-login.php>
     Order deny,allow
     Deny from All
     Allow from 123.456.789.0
     </Files>
  49. Y:Easily rename your .htaccess file(重命名 .htaccess)
  50. 我们可以将 .htaccess 命名为任意文件名,以达到保护其安全性的目的:

    1
    2
    
    # rename htaccess files
    AccessFileName ht.access
  51. Z:Say zygote in your .htaccess file
  52. 这真是一个很雷人的 .htaccess 技巧,当我们在 .htaccess 加入 zygote 时,留言者留言时则需在留言开头添加“#”,囧

原文地址:A to Z of WordPress .htaccess Hacks
站趣译文:从A到Z 26条 WordPress .htaccess 技巧(有改动)

13个评论

  • Reply 1 拾贰月

    May 10th, 2009 at 21:01

    我曾经就死在 .htaccess上面好几次,很细致,太有帮助了。

    • Reply 2 辐射鱼

      May 14th, 2009 at 00:36

      半夜造访你的博客,竟然只有个黑漆漆的欢迎页

      • Reply 3 拾贰月

        May 14th, 2009 at 19:51

        你也实在够晚的。
        我也实在是找不到一个更好的style来展现我的博客,
        以及没有一个更好的姿态来表达我的情感。
        空着,等待觉悟,或者被泼醒。

        • Reply 4 辐射鱼

          May 14th, 2009 at 20:03

          写博客最开始可能是看着别人写,自己心里也痒痒,可一段新鲜感过去后,却找不到写的了,于是就开始放弃,多数博客就这么昙花一现。

          • Reply 5 拾贰月

            May 14th, 2009 at 22:55

            其实我还是热情高涨的,只是没考虑清到底要写些什么比较有意义,那些零零碎碎的唠叨总是让人反感。

            • Reply 6 辐射鱼

              May 14th, 2009 at 23:38

              share 下你的兴趣吧,这个爱看的比较多。

              • Reply 7 拾贰月

                May 14th, 2009 at 23:56

                大家都是八卦控啊。
                这样的话,估计有得好看了。

  • Reply 8 coolcfan

    May 13th, 2009 at 18:19

    1、好强大的Blog!
    2、你用的代码高亮插件是?

    • Reply 9 辐射鱼

      May 13th, 2009 at 20:23

      我们用的是 WP-Syntax,欢迎常来

  • Reply 10 Showfom

    May 13th, 2009 at 20:33

    哇靠

  • Reply 11 nooidea

    May 15th, 2009 at 19:40

    最害怕的就是这个玩意儿~~

    还好每次都有别人提供现成的 ”P

    • Reply 12 辐射鱼

      May 15th, 2009 at 20:01

      众人拾柴火焰高,平时看到就记下,慢慢的就都晓得了

  • Reply 13 wzyboy

    August 27th, 2010 at 18:01

    嘿嘿, 受益匪浅啊