贝塔罗拉

.htaccess在wordpress中的10个绝佳应用

时间: 2009-07-05 / 分类: wordpress / 14个评论 发表评论

.htaccess文件可以控制Apache Webserver,它非常实用我们可以通过它来实现很多功能。在这篇文章中我们可以看到通过修改.htaccess文件来增强wordpress的功能、安全性、可用性.

警告:在修改.htaccess文件时请确保已经备份以防不测

1.重定向Wordpress默认Rss地址到Feedburner

Feedburner是Google提供的Feed托管服务,非常优秀,如果不是受到国内“墙”的影响Feedsky也不会在国内一家独大。如果我们想手动修改wordpress文件来实现Feedburner替代默认Rss,过程非常繁琐,不过现在没有那么麻烦了,我们可以通过修改.htaccess来轻松实现该功能

1
2
3
4
5
6
7
# temp redirect wordpress content feeds to feedburner
<ifmodule mod_rewrite.c>
 RewriteEngine on
 RewriteCond %{HTTP_USER_AGENT} !FeedBurner    [NC]
 RewriteCond %{HTTP_USER_AGENT} !FeedValidator [NC]
 RewriteRule ^feed/?([_0-9a-z-]+)?/?$ http://feeds2.feedburner.com/jomor [R=302,NC,L]
</ifmodule>

大家使用时别忘了把代码中的Feedburner地址替换为自己的

2.在wordpress的url中去除/category/

wordpress默认的category的永久链接形式是这样的:

1
http://jomor.org/category/wordpress

这样看来,category似乎在url中显的多余,我们可以修改.htaccess来把他去除

1
RewriteRule ^category/(.+)$ http://www.yourblog.com/$1 [R=301,L]

修改过后链接就会变成这个样子了,是不是很简洁

1
http://jomor.org/wordpress

3.使用浏览器缓存加速wordpress访问速度

使用缓存是减少网站载入时间的一种好方法,使用下面的代码虽然无法直接为网站加速,但是在多次访问时可以让浏览器节省不少工作

1
2
3
4
5
6
7
FileETag MTime Size
<ifmodule mod_expires.c>
  <filesmatch  ?\.(jpg|gif|png|css|js)$?>
       ExpiresActive on
       ExpiresDefault &quot;access plus 1 year&quot;
   </filesmatch>
</ifmodule>

4.开启gzip压缩

原来的wordpress版本是自带gzip压缩的,从wp 2.5版本后官方去除了该选项,我们可以通过修改.htaceess来实现,不必安装专门的插件了。

1
2
3
4
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/javascript text/css application/x-javascript
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4.0[678] no-gzip
BrowserMatch bMSIE !no-gzip !gzip-only-text/html

5.把带有日期格式的永久链接形式重定向到/%postname%/格式

首先声明下:这种方法要改变博客的永久链接形式,不要轻易改动,由此可见写博客做好规划是很有必要的。

首先去wordpress的控制面板把永久链接的形式修改为只有/%postname%/的格式,此时你博客的永久链接形式应该为:

1
http://www.yourblog.com/name-of-the-post

按照下面代码修改.htaccess文件之后,我们就可以重定向带有日期格式的链接了,这样别人通过原有链接仍然可以访问您的网站。

1
RedirectMatch 301 /([0-9]+)/([0-9]+)/([0-9]+)/(.*)$ http://www.domain.com/$4

6.阻止没有referrer requests的评论减少垃圾评论

垃圾评论让我们为之气结,虽然有akismet等反垃圾评论插件,但是依然有很多漏网之鱼,大部分垃圾评论制造者都是使用软件自动发送的,通过修改.htaccess我们可以阻止没有referrer的垃圾评论,配合相关发垃圾评论插件使用效果更加。

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]

7.重定向访客到维护页面

当我们更换主题,主机升级等等操作的时候,我们可以暂时让访客访问维护页面,一方面方便了访客也可以借助302重定向告知搜索引擎这不是我的主页面。自行更换代码中的html文件和第三行的ip地址

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

8.保护您的博客不被盗链

这种方法适合图片放在自己空间的blogger,自行替换代码中的相关文件夹地址

1
2
3
4
5
6
RewriteEngine On
#Replace ?mysite\.com/ with your blog url
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?mysite\.com/ [NC]
RewriteCond %{HTTP_REFERER} !^$
#Replace /images/nohotlink.jpg with your &quot;don't hotlink&quot; image url
RewriteRule .*\.(jpe?g|gif|bmp|png)$ /images/nohotlink.jpg [L]

9.只允许固定的ip地址访问wp-admin

这种方法真的好邪恶,虽然提高了安全性,但是不太适合现在的宽带上网,如果有固定ip的朋友可以试试。

1
2
3
4
5
6
7
8
9
AuthUserFile /dev/null
AuthGroupFile /dev/null
AuthName &quot;Example Access Control&quot;
AuthType Basic
<limit get>
order deny,allow
deny from all
allow from xx.xx.xx.xx
</limit>

通过修改第8行,我们可以增加允许的ip,多添加一行类似代码allow from xx.xx.xx.xx 即可

10.屏蔽固定ip访问

如果有多个ip需要禁止,自行修改第三行

1
2
3
4
5
<limit get post>
order allow,deny
deny from 200.49.176.139
allow from all
</limit>

14个评论

  1. taobaokeo
    2010/06/21 于 11:32:16

    谢谢博主的分享,呵呵 很好的资源喃 学习啦

  2. hubrudy
    2010/04/15 于 13:48:09

    非常有用!谢谢

  3. 81度
    2010/01/12 于 20:38:09

    开了GZIP,压缩率高达69.1%!太强大了!

  4. chancat
    2009/11/20 于 23:13:35

    非常感谢分享!

  5. 吖Bee
    2009/07/17 于 08:52:05

    今天来研究”8.保护您的博客不被盗链”…picasa被和谐….

    • jomor
      2009/07/17 于 18:33:28

      picasa没有被和谐啊,我这儿还能访问

  6. jomor
    2009/07/07 于 16:34:29

    @跨速头盔
    我也认为这些应用中301转向最实用

  7. 跨速头盔
    2009/07/07 于 15:23:30

    .htaccess文件之前一直来做301转向的,还不错呢~

  8. jomor
    2009/07/06 于 10:02:38

    @dev
    这样需要安装插件301重定向

  9. dev
    2009/07/05 于 22:40:13

    @jomor
    我在我的电脑上搭建了一个blog来测试插件的。我在这个模拟的环境里修改固定链接格式后不能访问原来的文章。是不是修改固定链接后,之前原有的文章就找不到路径了?

  10. jomor
    2009/07/05 于 22:22:53

    @安逸时代
    的确一般的虚拟主机都能开mod rewrite,其他的就不清楚了

  11. jomor
    2009/07/05 于 22:21:37

    @dev
    我去看了下你的网站正常啊

  12. 安逸时代
    2009/07/05 于 21:31:01

    htaccess的功能确实强,但是虚拟主机很少给开通全部功能吧@

  13. dev
    2009/07/05 于 21:29:32

    我正在修改固定链接格式呢 但是原来的关于页面 和自带的helloworld 打不开了,是不是还的安装个插件做重定向?

发表评论

您的昵称 *

您的邮箱 *

您的网站