因为最近这几天一直在本机使用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伪静态规则:
- # BEGIN Sablog-X
- <IfModule mod_rewrite.c>
- RewriteEngine On
- RewriteBase /
- RewriteCond %{REQUEST_FILENAME} -f [OR]
- RewriteCond %{REQUEST_FILENAME} -d
- RewriteRule ^.*$ - [S=15]
- # 只带月份的归档
- RewriteRule ^date/([0-9]{6})/?([0-9]+)?/?$ index.php?action=article&setdate=$1&page=$2 [QSA,L]
- # 无分类翻页
- RewriteRule ^page/([0-9]+)?/?$ index.php?action=article&page=$1 [QSA,L]
- # 分类
- RewriteRule ^category/([0-9]+)/?([0-9]+)?/?$ index.php?action=article&cid=$1&page=$2 [QSA,L]
- RewriteRule ^category/([^/]+)/?([0-9]+)?/?$ index.php?action=article&curl=$1&page=$2 [QSA,L]
- # 归档、高级搜索
- RewriteRule ^(archives|search|article|links)/?$ index.php?action=$1 [QSA,L]
- # 用户注册、登陆
- RewriteRule ^(register|login)/?$ cp.php?action=$1 [QSA,L]
- # 全部评论、标签列表、引用列表 带分页
- RewriteRule ^(comments|tagslist|trackbacks|article)/?([0-9]+)?/?$ index.php?action=$1&page=$2 [QSA,L]
- # tags
- RewriteRule ^tag/([^/]+)/?([0-9]+)?/?$ index.php?action=article&item=$1&page=$2 [QSA,L]
- # 文章
- RewriteRule ^archives/([0-9]+)/?([0-9]+)?/?$ index.php?action=show&id=$1&page=$2 [QSA,L]
- # RSS
- RewriteRule ^rss/([0-9]+)?/?$ rss.php?cid=$1 [QSA,L]
- RewriteRule ^rss/([^/]+)/?$ rss.php?url=$1 [QSA,L]
- # 用户
- RewriteRule ^uid/([0-9]+)/?([0-9]+)?/?$ index.php?action=article&uid=$1&page=$2 [QSA,L]
- RewriteRule ^user/([^/]+)/?([0-9]+)?/?$ index.php?action=article&user=$1&page=$2 [QSA,L]
- # 地图文件
- RewriteRule sitemap.xml sitemap.php [QSA,L]
- # 自定义链接
- RewriteRule ^([^/]+)/?([0-9]+)?/?$ index.php?action=show&alias=$1&page=$2 [QSA,L]
- </IfModule>
- # END Sablog-X
修改完后启动Apache,一个郁闷的提示:没有此记录。以前一直按这方法改都没有问题,这次怎么会这样呢?找资料查不到,问官方能得到答案的可能性很少。于是用笨办法一条一条地改,改一条保存一次再重启一次Apache。排查到竟然是最后一条出了问题。
- # 自定义链接
- RewriteRule ^(.*)/([^/]+)/?([0-9]+)?/?$ $1/index.php?action=show&alias=$2&page=$3 [QSA,L]
- //我猜是 (.*) 与 ([^/]+) 冲突了。:(
在网上也没有找到解决办法。在发表日志时发现SaBlog的自定义URL只能是半角字母、数字、下划线和减号。哈哈,就从这动手术了。
- # SaBlog的自定义URL只能使用半角字母、数字、下划线和减号.
- # 于是把 ([^/]+) 修改为 ([0-9a-zA-Z\-\_]+)
- # 下面为得到最后规则,测试可用。也证实我上面的猜想是对的。:)
- # 自定义链接
- RewriteRule ^(.*)/([0-9a-zA-Z\-\_]+)/?([0-9]+)?/?$ $1/index.php?action=show&alias=$2&page=$3 [QSA,L]
我修改过的适用于独立主机的.htaccess伪静态规则:(欢迎使用)
- <IfModule mod_rewrite.c>
- RewriteEngine On
- RewriteCond %{REQUEST_FILENAME} -f [OR]
- RewriteCond %{REQUEST_FILENAME} -d
- RewriteRule ^.*$ - [S=15]
- # 只带月份的归档
- RewriteRule ^(.*)/date/([0-9]{6})/?([0-9]+)?/?$ $1/index.php?action=article&setdate=$3&page=$3 [QSA,L]
- # 无分类翻页
- RewriteRule ^(.*)/page/([0-9]+)?/?$ $1/index.php?action=article&page=$2 [QSA,L]
- # 分类
- RewriteRule ^(.*)/category/([0-9]+)/?([0-9]+)?/?$ $1/index.php?action=article&cid=$2&page=$3 [QSA,L]
- RewriteRule ^(.*)/category/([^/]+)/?([0-9]+)?/?$ $1/index.php?action=article&curl=$2&page=$3 [QSA,L]
- # 归档、高级搜索
- RewriteRule ^(.*)/(archives|search|article|links)/?$ $1/index.php?action=$2 [QSA,L]
- # 用户注册、登陆
- RewriteRule ^(.*)/(register|login)/?$ $1/cp.php?action=$2 [QSA,L]
- # 全部评论、标签列表、引用列表 带分页
- RewriteRule ^(.*)/(comments|tagslist|trackbacks|article)/?([0-9]+)?/?$ $1/index.php?action=$2&page=$3 [QSA,L]
- # tags
- RewriteRule ^(.*)/tag/([^/]+)/?([0-9]+)?/?$ $1/index.php?action=article&item=$2&page=$3 [QSA,L]
- # 文章
- RewriteRule ^(.*)/archives/([0-9]+)/?([0-9]+)?/?$ $1/index.php?action=show&id=$2&page=$3 [QSA,L]
- # RSS
- RewriteRule ^(.*)/rss/([0-9]+)?/?$ $1/rss.php?cid=$2 [QSA,L]
- RewriteRule ^(.*)/rss/([^/]+)/?$ $1/rss.php?url=$2 [QSA,L]
- # 用户
- RewriteRule ^(.*)/uid/([0-9]+)/?([0-9]+)?/?$ $1/index.php?action=article&uid=$2&page=$3 [QSA,L]
- RewriteRule ^(.*)/user/([^/]+)/?([0-9]+)?/?$ $1/index.php?action=article&user=$2&page=$3 [QSA,L]
- # 地图文件
- RewriteRule ^(.*)/sitemap.xml $1/sitemap.php [QSA,L]
- # 自定义链接
- RewriteRule ^(.*)/([0-9a-zA-Z\-\_]+)/?([0-9]+)?/?$ $1/index.php?action=show&alias=$2&page=$3 [QSA,L]
- </IfModule>




点击引用该评论回复
点击引用该评论回复
点击引用该评论回复
老大你正在用的这个.htaccess能发到我的信箱吗,我怎么试都是不成功
你确定你用的是独立主机?这个.htaccess和Sablog2.0要放在根目录。
点击引用该评论回复