Jan200911

dKeN

Internet·网

3 评论

SaBlog-X 2.0伪静态规则虚拟主机 To 独立主机的修改

因为最近这几天一直在本机使用SaBlog-x 2.0,sablog-x 2.0官方提供给虚拟主机用的.htaccess伪静态规则并不适用于独立主机。为了方便,便想把它修改到适用于独立主机。

于是便按照从discuz学到的方法一一修改。(以下总结来自http://www.geniusy.com/apache-rewrite-exchange)

1、独立主机每条规则以 ^(.*) 开头,而虚拟主机就是 ^ ,所以加入 (.*) 就行了

2、独立主机规则的后半段以 $1/ 开头,虚拟主机没有,也是加上就行了;

3、独立主机因为前面已经有了 $1,所以后面就应该依次是 $2,$3,改一下数字就行了

SaBlog-x 2.0官方提供给虚拟主机用的.htaccess伪静态规则:

  1. # BEGIN Sablog-X 
  2. <IfModule mod_rewrite.c> 
  3. RewriteEngine On 
  4. RewriteBase / 
  5. RewriteCond %{REQUEST_FILENAME} -f [OR] 
  6. RewriteCond %{REQUEST_FILENAME} -d 
  7. RewriteRule ^.*$ - [S=15
  8. # 只带月份的归档 
  9. RewriteRule ^date/([0-9]{6})/?([0-9]+)?/?$ index.php?action=article&setdate=$1&page=$2 [QSA,L] 
  10. # 无分类翻页 
  11. RewriteRule ^page/([0-9]+)?/?$ index.php?action=article&page=$1 [QSA,L] 
  12. # 分类 
  13. RewriteRule ^category/([0-9]+)/?([0-9]+)?/?$ index.php?action=article&cid=$1&page=$2 [QSA,L] 
  14. RewriteRule ^category/([^/]+)/?([0-9]+)?/?$ index.php?action=article&curl=$1&page=$2 [QSA,L] 
  15. # 归档、高级搜索 
  16. RewriteRule ^(archives|search|article|links)/?$ index.php?action=$1 [QSA,L] 
  17. # 用户注册、登陆 
  18. RewriteRule ^(register|login)/?$ cp.php?action=$1 [QSA,L] 
  19. # 全部评论、标签列表、引用列表 带分页 
  20. RewriteRule ^(comments|tagslist|trackbacks|article)/?([0-9]+)?/?$ index.php?action=$1&page=$2 [QSA,L] 
  21. # tags 
  22. RewriteRule ^tag/([^/]+)/?([0-9]+)?/?$ index.php?action=article&item=$1&page=$2 [QSA,L] 
  23. # 文章 
  24. RewriteRule ^archives/([0-9]+)/?([0-9]+)?/?$ index.php?action=show&id=$1&page=$2 [QSA,L] 
  25. # RSS 
  26. RewriteRule ^rss/([0-9]+)?/?$ rss.php?cid=$1 [QSA,L] 
  27. RewriteRule ^rss/([^/]+)/?$ rss.php?url=$1 [QSA,L] 
  28. # 用户 
  29. RewriteRule ^uid/([0-9]+)/?([0-9]+)?/?$ index.php?action=article&uid=$1&page=$2 [QSA,L] 
  30. RewriteRule ^user/([^/]+)/?([0-9]+)?/?$ index.php?action=article&user=$1&page=$2 [QSA,L] 
  31. # 地图文件 
  32. RewriteRule sitemap.xml sitemap.php [QSA,L] 
  33.  
  34. # 自定义链接 
  35. RewriteRule ^([^/]+)/?([0-9]+)?/?$ index.php?action=show&alias=$1&page=$2 [QSA,L] 
  36. </IfModule> 
  37. # END Sablog-X 

修改完后启动Apache,一个郁闷的提示:没有此记录。以前一直按这方法改都没有问题,这次怎么会这样呢?找资料查不到,问官方能得到答案的可能性很少。于是用笨办法一条一条地改,改一条保存一次再重启一次Apache。排查到竟然是最后一条出了问题。

  1. # 自定义链接 
  2. RewriteRule ^(.*)/([^/]+)/?([0-9]+)?/?$ $1/index.php?action=show&alias=$2&page=$3 [QSA,L] 
  3. //我猜是 (.*) ([^/]+) 冲突了。:( 

在网上也没有找到解决办法。在发表日志时发现SaBlog的自定义URL只能是半角字母、数字、下划线和减号。哈哈,就从这动手术了。

  1. # SaBlog的自定义URL只能使用半角字母、数字、下划线和减号. 
  2. # 于是把 ([^/]+) 修改为 ([0-9a-zA-Z\-\_]+) 
  3. # 下面为得到最后规则,测试可用。也证实我上面的猜想是对的。:)
  4. # 自定义链接  
  5. RewriteRule ^(.*)/([0-9a-zA-Z\-\_]+)/?([0-9]+)?/?$ $1/index.php?action=show&alias=$2&page=$3 [QSA,L]  

我修改过的适用于独立主机的.htaccess伪静态规则:(欢迎使用)

  1. <IfModule mod_rewrite.c> 
  2. RewriteEngine On 
  3. RewriteCond %{REQUEST_FILENAME} -f [OR] 
  4. RewriteCond %{REQUEST_FILENAME} -d 
  5. RewriteRule ^.*$ - [S=15
  6. # 只带月份的归档 
  7. RewriteRule ^(.*)/date/([0-9]{6})/?([0-9]+)?/?$ $1/index.php?action=article&setdate=$3&page=$3 [QSA,L] 
  8. # 无分类翻页 
  9. RewriteRule ^(.*)/page/([0-9]+)?/?$ $1/index.php?action=article&page=$2 [QSA,L] 
  10. # 分类 
  11. RewriteRule ^(.*)/category/([0-9]+)/?([0-9]+)?/?$ $1/index.php?action=article&cid=$2&page=$3 [QSA,L] 
  12. RewriteRule ^(.*)/category/([^/]+)/?([0-9]+)?/?$ $1/index.php?action=article&curl=$2&page=$3 [QSA,L] 
  13. # 归档、高级搜索 
  14. RewriteRule ^(.*)/(archives|search|article|links)/?$ $1/index.php?action=$2 [QSA,L] 
  15. # 用户注册、登陆 
  16. RewriteRule ^(.*)/(register|login)/?$ $1/cp.php?action=$2 [QSA,L] 
  17. # 全部评论、标签列表、引用列表 带分页 
  18. RewriteRule ^(.*)/(comments|tagslist|trackbacks|article)/?([0-9]+)?/?$ $1/index.php?action=$2&page=$3 [QSA,L] 
  19. # tags 
  20. RewriteRule ^(.*)/tag/([^/]+)/?([0-9]+)?/?$ $1/index.php?action=article&item=$2&page=$3 [QSA,L] 
  21. # 文章 
  22. RewriteRule ^(.*)/archives/([0-9]+)/?([0-9]+)?/?$ $1/index.php?action=show&id=$2&page=$3 [QSA,L] 
  23. # RSS 
  24. RewriteRule ^(.*)/rss/([0-9]+)?/?$ $1/rss.php?cid=$2 [QSA,L] 
  25. RewriteRule ^(.*)/rss/([^/]+)/?$ $1/rss.php?url=$2 [QSA,L] 
  26. # 用户 
  27. RewriteRule ^(.*)/uid/([0-9]+)/?([0-9]+)?/?$ $1/index.php?action=article&uid=$2&page=$3 [QSA,L] 
  28. RewriteRule ^(.*)/user/([^/]+)/?([0-9]+)?/?$ $1/index.php?action=article&user=$2&page=$3 [QSA,L] 
  29. # 地图文件 
  30. RewriteRule ^(.*)/sitemap.xml $1/sitemap.php [QSA,L] 
  31.  
  32. # 自定义链接 
  33. RewriteRule ^(.*)/([0-9a-zA-Z\-\_]+)/?([0-9]+)?/?$ $1/index.php?action=show&alias=$2&page=$3 [QSA,L] 
  34. </IfModule> 

 

« 上一篇 | 下一篇 »

引用地址:

  • 点击获得Trackback地址,Encode: UTF-8
  • 点击获得Trackback地址,Encode: GB2312 or GBK
  • 点击获得Trackback地址,Encode: BIG5

» 我要发表评论访客评论:(现有 3 条评论)

  1. Gravatar
    1楼 北京时间 on 2009, April 7, 12:04 AM Says:
    点击引用该评论回复
    感谢分享..
  2. Gravatar
    2楼 cooolo on 2009, October 14, 10:34 PM Says:
    点击引用该评论回复
    老大你正在用的这个.htaccess能发到我的信箱吗,我怎么试都是不成功
  3. Gravatar
    3楼 dKeN on 2009, November 4, 11:06 AM Says:
    点击引用该评论回复
    引用 cooolo 说过的话:
    老大你正在用的这个.htaccess能发到我的信箱吗,我怎么试都是不成功

    你确定你用的是独立主机?这个.htaccess和Sablog2.0要放在根目录。

发表评论:( 现在流行评论作者超链接 rel="nofollow")