现在的位置: 首页 > WordPress > 正文
实用的 WordPress .htaccess 技巧
2012年07月23日 WordPress ⁄ 共 6651字 评论数 5 ⁄ 被围观 293+

1、使用浏览器缓存

可以修改.htaccess文件让访问者使用浏览器缓存来优化其访问速度。

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

或者:

  1. # 1 YEAR   
  2. <FilesMatch "\.(ico|pdf|flv)$">   
  3. Header set Cache-Control "max-age=29030400, public"  
  4. </FilesMatch>   
  5. # 1 WEEK   
  6. <FilesMatch "\.(jpg|jpeg|png|gif|swf)$">   
  7. Header set Cache-Control "max-age=604800, public"  
  8. </FilesMatch>   
  9. # 2 DAYS   
  10. <FilesMatch "\.(xml|txt|css|js)$">   
  11. Header set Cache-Control "max-age=172800, proxy-revalidate"  
  12. </FilesMatch>   
  13. # 1 MIN   
  14. <FilesMatch "\.(html|htm|php)$">   
  15. Header set Cache-Control "max-age=60, private, proxy-revalidate"  
  16. </FilesMatch>  

2、设置你的WordPress防盗链

盗链是指其它网站直接使用你自己网站内的资源,从而浪费网站的流量和带宽,比如图片,上传的音乐,电影等文件。(替换mysite为自己的网址和/images/notlink.jpg为自己定制的防盗链声明图片)

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

3、去除WordPress分类链接中的“/category/”前缀

默认情况下,WordPress的分类链接显示的样式为:

  1. http://xxx.com/blog/category/tech  

其实其中的category部分没有任何意义,如果想去掉它可以修改.htaccess文件(替换yourblog为自己的网址)。

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

4、压缩静态数据

可以修改.htaccess文件来压缩需要访问的数据(传输后在访问端解压),从而可以减少访问流量和载入时间。

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

5、阻止没有referrer来源链接的垃圾评论

设置.htaccess文件可以阻止大多数无Refferrer来源的垃圾评论机器人Bot Spammer。其会查询访问你网站的来源链接,然后阻止其通过wp-comments-post.php来进行垃圾评论。

  1. RewriteEngine On   
  2. RewriteCond %{REQUEST_METHOD} POST   
  3. RewriteCond %{REQUEST_URI} .wp-comments-post\.php*   
  4. RewriteCond %{HTTP_REFERER} !.*yourblog.com.* [OR]   
  5. RewriteCond %{HTTP_USER_AGENT} ^$   
  6. RewriteRule (.*) ^http://%{REMOTE_ADDR}/$ [R=301,L]  

6、重定向wordpress的feed订阅地址

除了修改WordPress的模板文件来定制其输出的RSS Feed链接地址外,还可以使用.htaccess文件来进行设置(替换yourrssfeedlink为自己的Feedburner地址)。

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

很多年前,有很多不同的feed格式,例如RSS、Atom、RDF等等。但是现在RSS已经占了绝对的主导地位。下面这段代码可以让你重定向不同的feed格式到同一个feed。这段代码可以直接在WordPress博客上使用。

  1. <IfModule mod_alias.c>   
  2.  RedirectMatch 301 /feed/(atom|rdf|rss|rss2)/?$ http://example.com/feed/   
  3.  RedirectMatch 301 /comments/feed/(atom|rdf|rss|rss2)/?$ http://example.com/comments/feed/   
  4. </IfModule>  

7、重定向日期格式的WP Permalink链接地址为Postname格式

如果你目 前的Permalink地址为/%year%/%monthnum%/%day%/%postname%/ 的格式,那么我强烈推荐你直接使用/%postname%/ ,这样对搜索引擎要舒服得多。首先你需要在WordPress的后台设置输出的Permalinks格式为/%postname%/ 。然后修改.htaccess文件来重定向旧的链接,不然别人以前收藏你的网址都会转成404哦!(替换yourdomain为自己的网址)

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

8、定制访问者跳转到维护页面

当你进行网站升级,模板修改调试等操作时,最好让访问者临时 跳转到一个声明的维护页面(和404错误页面不同),来通知网站暂时无法访问,而不是留下一片空白或者什么http bad错误。(替换maintenance.html为自己定制的维护页面网址,替换123.123.123.123为自己目前的IP地址,不然你自己访 问也跳转哦)

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

9、只允许自己的IP访问wp-admin

如果你不是团队合作Blog,最好设置只有自己能够访问WP的后台。前提是你的IP不是像我一样动态的哦。(替换xx.xx.xx.xx为自己的IP地址)

  1. AuthUserFile /dev/null   
  2. AuthGroupFile /dev/null   
  3. AuthName "Example Access Control"  
  4. AuthType Basic   
  5. <LIMIT GET>   
  6. order deny,allow   
  7. deny from all   
  8. allow from xx.xx.xx.xx   
  9. </LIMIT>  

10、阻止指定IP的访问

如果你想要阻止指定IP的访问,来防止其垃圾评论,那么你可以创建自己的Backlist黑名单。(替换xx.xx.xx.xx为指定的IP地址)

  1. <Limit GET POST>   
  2. order allow,deny   
  3. deny from xx.xx.xx.xx   
  4. allow from all   
  5. </Limit>  

11、强制后缀反斜杠

在URL的尾部加上反斜杠似乎对SEO有利 :)

  1. <IfModule mod_rewrite.c>   
  2.  RewriteCond %{REQUEST_URI} /+[^\.]+$   
  3.  RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L]   
  4. </IfModule>   

12、重定向移动设备

加入你的网站支持移动设备访问的话,最好还是重定向移动设备的访问到专门定制的页面

  1. RewriteEngine On   
  2. RewriteCond %{REQUEST_URI} !^/m/.*$   
  3. RewriteCond %{HTTP_ACCEPT} "text/vnd.wap.wml|application/vnd.wap.xhtml+xml" [NC,OR]   
  4. RewriteCond %{HTTP_USER_AGENT} "acs|alav|alca|amoi|audi|aste|avan|benq|bird|blac|blaz|brew|cell|cldc|cmd-" [NC,OR]   
  5. RewriteCond %{HTTP_USER_AGENT} "dang|doco|eric|hipt|inno|ipaq|java|jigs|kddi|keji|leno|lg-c|lg-d|lg-g|lge-" [NC,OR]   
  6. RewriteCond %{HTTP_USER_AGENT}  "maui|maxo|midp|mits|mmef|mobi|mot-|moto|mwbp|nec-|newt|noki|opwv" [NC,OR]   
  7. RewriteCond %{HTTP_USER_AGENT} "palm|pana|pant|pdxg|phil|play|pluc|port|prox|qtek|qwap|sage|sams|sany" [NC,OR]   
  8. RewriteCond %{HTTP_USER_AGENT} "sch-|sec-|send|seri|sgh-|shar|sie-|siem|smal|smar|sony|sph-|symb|t-mo" [NC,OR]   
  9. RewriteCond %{HTTP_USER_AGENT} "teli|tim-|tosh|tsm-|upg1|upsi|vk-v|voda|w3cs|wap-|wapa|wapi" [NC,OR]   
  10. RewriteCond %{HTTP_USER_AGENT} "wapp|wapr|webc|winw|winw|xda|xda-" [NC,OR]   
  11. RewriteCond %{HTTP_USER_AGENT} "up.browser|up.link|windowssce|iemobile|mini|mmp" [NC,OR]   
  12. RewriteCond %{HTTP_USER_AGENT} "symbian|midp|wap|phone|pocket|mobile|pda|psp" [NC]   
  13. #------------- The line below excludes the iPad   
  14. RewriteCond %{HTTP_USER_AGENT} !^.*iPad.*$   
  15. #-------------   
  16. RewriteCond %{HTTP_USER_AGENT} !macintosh [NC] #*SEE NOTE BELOW   
  17. RewriteRule ^(.*)$ /m/ [L,R=302]  

13、强制浏览器下载指定的文件类型

你可以强制浏览器下载某些类型的文件,而不是读取并打开这些文件,例如MP3、XLS。

  1. <Files *.xls>   
  2.   ForceType application/octet-stream   
  3.   Header set Content-Disposition attachment   
  4. </Files>   
  5. <Files *.eps>   
  6.   ForceType application/octet-stream   
  7.   Header set Content-Disposition attachment   
  8. </Files>  

14、火狐的跨域名字体嵌入

火狐不允许嵌入一个外站的字体,下面的.htaccess片段可以绕过这个限制

  1. <FilesMatch "\.(ttf|otf|eot|woff)$">   
  2. <IfModule mod_headers.c>   
  3.     Header set Access-Control-Allow-Origin "http://yourdomain.com"  
  4. </IfModule>   
  5. </FilesMatch>  

15、置网站的HTML5视频

HTML5为我们带来了不用Flash的视频播放功能,但是你必须配置你的服务器来提供最新的HTML5视频播放功能。

  1. RewriteCond %{REQUEST_FILENAME} !-f   
  2. RewriteCond %{REQUEST_FILENAME} !-d   
  3. RewriteCond %{REQUEST_URI} !=/favicon.ico   
  4. AddType video/ogg .ogv   
  5. AddType video/ogg .ogg   
  6. AddType video/mp4 .mp4   
  7. AddType video/webm .webm   
  8. AddType application/x-shockwave-flash swf  

16、记录PHP错误

在页面上显示PHP错误是很尴尬的事情,也不安全,下面这段代码可以把PHP错误记录到.log文件中而不在页面显示。

  1. # display no errs to user   
  2. php_flag display_startup_errors off   
  3. php_flag display_errors off   
  4. php_flag html_errors off   
  5. # log to file   
  6. php_flag log_errors on   
  7. php_value error_log /location/to/php_error.log  

17、在JavaScript代码中运行PHP

在JS中插入PHP代码有时候是很有用的,例如读取数据库。下面这段代码可以让你在JS中运行PHP。

  1. AddType application/x-httpd-php .js   
  2. AddHandler x-httpd-php5 .js   
  3.   
  4. <FilesMatch "\.(js|php)$">   
  5. SetHandler application/x-httpd-php   
  6. </FilesMatch>  
分享到:   

目前有 5 条留言 其中:访客:5 条, 博主:0 条

  1. 活塞杆 : 2012年07月25日15:16:48  1楼

    确实是很实用的,受教了

  2. 谁在秋千 : 2012年07月26日09:58:28  2楼

    全是代码,没看出来

  3. 郑州婚纱摄影 : 2012年08月01日09:56:00  3楼

    对代码不太懂啊

  4. @前端分享 : 2012年12月02日12:43:08  4楼

    很全面的htaccsss

  5. Zorro : 2013年01月21日09:34:50  5楼

    第一个用得上。