首页 > 新闻资讯 > WordPress十大.htaccess修改技巧

WordPress十大.htaccess修改技巧

7条评论
标签:
更多

.htaccess是个控制Apache Web服务器的文件,这是一个很实用的文件,通过它你可以完成很多任务。 本文将向大家展示.htaccess如何在安全性、功能性以及实用性方面帮助我们建立WordPress博客。

警告

编辑或修改WordPress博客的.htaccess文件时,为防止意外情况发生,请确定你已进行备份

1. 用.htaccess将WordPress RSS 订阅重定向到Feedburner

没有哪个博客不使用Feedburner。 是的,Feedburner是一项非常友好的服务,你可以从中了解有多少人订阅了你的rss feeds。 唯一的问题是,需要编辑主题文件来手动改变rss的url地址。 令人欣慰的是,现在有了.htaccess这样的修改帮你节省了大量时间。

使用以下代码时记住修改第六行内容。

# 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/catswhocode [R=302,NC,L]
</IfModule>

Ven语:也可以根据情况替换成其他Feed烧制服务商,比如国内的Feedsky,只需替换相应代码即可。

2. 移除WordPress url或对其分类

默认情况下,WordPress分类的永久链接都是按以下方式显示:

http://www.catswhocode.com/blog/category/wordpress

你会发现,url中的category显得很多余。 下面我们教你怎样把它移除:

首先备份.htaccess文件。 然后打开该文件追加以下命令行:

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

保存后分类页面会显示如下:

http://www.catswhocode.com/blog/wordpress

3. 使用浏览器缓存

使用浏览器缓存是个优化博客加载时间的好方法。 下列代码不能直接改善博客的加载,但在所请求内容没有被修改时,这些代码可以将304未被修改状态发送出去,这样就减轻了服务器的工作负担。

FileETag MTime Size
<ifmodule mod_expires.c>
<filesmatch "\.(jpg|gif|png|css|js)$">
ExpiresActive on
ExpiresDefault "access plus 1 year"
</filesmatch>
</ifmodule>

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管理账号,在settings→Permalinks菜单下选择custom。 将字段填充为/%postname%/。
这时你的永久链接看上去就和下面这个博客一样了:

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

下面我们用旧有的永久链接结构将所有反向链接重新导向到新的永久链接结构。 需要编辑WordPress 根目录下的.htaccess文件以达到以上目的。
将以下命令行复制到.htaccess文件中:

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

成功! 在没有丢失任何反向链接的情况下,我们成功的改变了永久链接的结构。

6. 禁止来路不明的评论

对每天收到的垃圾评论感到不耐烦? Akismet插件当然可以阻止这些垃圾评论,但.htaccess同样可以。 事实证明,很多垃圾评论机器人无处不在。 下列代码会追踪评论的来源(评论者所在的页面),如果评论者试图不经你的博客擅自进入wp-comments-post.php文件,这些代码会禁止评论发布。

更改第四行命令,换成自己博客的url。

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. 将访问者重定向到维护页面

升级博客或改变主题/版面设计时,最好不要让访问者发现你的博客有设计或代码方面,或者更严重的安全方面的问题。

解决方法是,设计一个“维护页面”,在维护完成前暂时将访问者导向维护页面。

将代码第二行中的maintenance.html换成希望访问者被导向的页面,第三行中的IP地址改为自己的IP。

注意:这里用到了一个302重新定向以防止搜索引擎排名将维护页面当作博客的真正主页。

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

8. 保护博客不受盗链侵扰

在某一网页中使用来自另一个网站的图片,这就被称为盗链。 很多博客经常被盗链,他们的带宽被用到了别的网站上。 下面的代码可以有效防止WordPress博客遭遇盗链。

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 "don't hotlink" image url
RewriteRule .*\.(jpe?g|gif|bmp|png)$ /images/nohotlink.jpg [L]

9. 不允许其他IP地址进入wp-admin目录

除非是合作撰写的博客,否则一定要将w—admin目录权限设为仅本人可见。 以下代码在固定IP下可用。

你只需在第八行中输入自己的固定IP地址。需要注意的是,必要时可以添加多个IP地址,这只要在代码中创建新的命令行: 允许来自xx.xx.xxx.xx。

AuthUserFile /dev/null
AuthGroupFile /dev/null
AuthName "Example Access Control"
AuthType Basic
<LIMIT GET>
order deny,allow
deny from all
allow from xx.xx.xx.xx
</LIMIT>

10. 用.htaccess禁止WordPress垃圾评论

大家都知道垃圾评论多么的令人讨厌。 如果有人或者机器不停的给你发垃圾评论,只要将他们的IP拉入黑名单就可以解决问题。

将代码第三行中的IP地址换成垃圾评论者的IP。 要想添加多个垃圾评论者的IP地址,可以在代码中创建新的命令行,如禁止xxx.xx.xxx.xxx。

<Limit GET POST>
order allow,deny
deny from 200.49.176.139
allow from all
</Limit>

原文:10 awesome .htaccess hacks for WordPress

* 版权声明:作者WordPress啦! 转载请注明出处。

#1
请问第一个具体怎么用呢?
#2
我把代码复制到.htaccess文件中了。 但是代码并不接管rss,是我哪里不对么? 怎么更改第六行呢?
#3
原文可能有误,其实.htaccess里只要写入下面代码就行: RewriteEngine on RewriteCond %{HTTP_USER_AGENT} !FeedBurner [NC] RewriteCond %{HTTP_USER_AGENT} !FeedValidator [NC] RewriteRule ^feed/?([_0-9a-z-]+)?/?$ http://feeds2.feedburner.com/catswhocode [R=302,NC,L] 请根据情况修改“RewriteRule ^feed/?([_0-9a-z-]+)?/?$ http://feeds2.feedburner.com/catswhocode [R=302,NC,L]”部分(需要正则表达式知识)。 此外,不建议在Feedburner之外的情况使用此代码,这将导致你的Feed烧制服务商无法抓取你的原始Feed。
#4
谢谢了。 正在通过http://unibetter.com/deerchao/zhengzhe-biaodashi-jiaocheng-se.htm 学习正则表达式。
#5
十分有用,谢谢了。