在nginx上配置Sa-Blog2.0与discuz7.0的rewrite规则

在nginx上配置Sa-Blog2.0rewrite规则

  1. # 只带月份的归档
  2.      rewrite "^/date/([0-9]{6})/?([0-9]+)?/?$" /index.php?action=article&setdate=$1&page=$2 last; 
  3. # 无分类翻页
  4.      rewrite ^/page/([0-9]+)?/?$ /index.php?action=article&page=$1 last; 
  5. # 分类
  6.      rewrite ^/category/([0-9]+)/?([0-9]+)?/?$ /index.php?action=article&cid=$1&page=$2 last; 
  7.      rewrite ^/category/([^/]+)/?([0-9]+)?/?$ /index.php?action=article&curl=$1&page=$2 last; 
  8. # 归档、高级搜索
  9.      rewrite ^/(archives|search|article|links)/?$ /index.php?action=$1 last; 
  10. # 全部评论、标签列表、引用列表 带分页
  11.      rewrite ^/(comments|tagslist|trackbacks|article)/?([0-9]+)?/?$ /index.php?action=$1&page=$2 last; 
  12. # tags
  13.      rewrite ^/tag/([^/]+)/?([0-9]+)?/?$ /index.php?action=article&item=$1&page=$2 last; 
  14. # 文章
  15.      rewrite ^/archives/([0-9]+)/?([0-9]+)?/?$ /index.php?action=show&id=$1&page=$2 last; 
  16. # RSS
  17.      rewrite ^/rss/([0-9]+)?/?$ /rss.php?cid=$1 last; 
  18.      rewrite ^/rss/([^/]+)/?$ /rss.php?url=$1 last; 
  19. # 用户
  20.      rewrite ^/uid/([0-9]+)/?([0-9]+)?/?$ /index.php?action=article&uid=$1&page=$2 last; 
  21.      rewrite ^/user/([^/]+)/?([0-9]+)?/?$ /index.php?action=article&user=$1&page=$2 last; 
  22. # 地图文件
  23.      rewrite sitemap.xml sitemap.php last; 
  24. # 自定义链接
  25.      rewrite ^(.*)/([0-9a-zA-Z\-\_]+)/?([0-9]+)?/?$ $1/index.php?action=show&alias=$2&page=$3 last;

注:“自定义链接”的rewrite规则参考了《SaBlog-X 2.0伪静态规则虚拟主机 To 独立主机的修改》一文,apache认的规则(.htaccess),nginx居然不认(红色画出的经过修改的)!为了保证搜索引擎的已经木锉的收录效果,只能保持rewrite功能,而且这样的文章名固定链接收录效果很好哦!

在nginx上配置discuz7.0的rewrite规则

  1. rewrite ^/archiver/((fid|tid)-[\w\-]+\.html)$ /archiver/index.php?$1 last;  
  2. rewrite ^/forum-([0-9]+)-([0-9]+)\.html$ /forumdisplay.php?fid=$1&page=$2 last;  
  3. rewrite ^/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ /viewthread.php?tid=$1&extra=page\%3D$3&page=$2 last;  
  4. rewrite ^/space-(username|uid)-(.+)\.html$ /space.php?$1=$2 last;  
  5. rewrite ^/tag-(.+)\.html$ /tag.php?name=$1 last; 

遭遇问题:directive "rewrite" is not terminated by ";"

用vi编辑器编辑完nginx.conf文件后保存,在shell下执行命令/usr/local/web/nginx/sbin/nginx -t用以检查nginx.conf配置文件是否正确(假设nginx被编译到/usr/local/web/nginx/)
正确的话:

[root@localhost]# /usr/local/web/nginx/sbin/nginx -t
the configuration file /usr/local/web/nginx/conf/nginx.conf syntax is ok
configuration file /usr/local/web/nginx/conf/nginx.conf test is successful

如果出现如下问题:directive "rewrite" is not terminated by ";"

[root@localhost]# /usr/local/web/nginx/sbin/nginx -t
[emerg]: directive "rewrite" is not terminated by ";" in /usr/local/web/nginx/conf/nginx.conf:160
configuration file /usr/local/web/nginx/conf/nginx.conf test failed

处理方法:将重新后的url用双引号引起来!

出错:rewrite ^/date/([0-9]{6})/?([0-9]+)?/?$ /index.php?action=article&setdate=$1&page=$2 last;
正确:rewrite "^/date/([0-9]{6})/?([0-9]+)?/?$" /index.php?action=article&setdate=$1&page=$2 last;

看着那句directive "rewrite" is not terminated by ";"还以为是没;呢!
参考资料:http://developmentcase.com/2009/04/17/nginx-rewrite-and-directive-rewrite-is-not-terminated-by/

Tags: nginx

上一篇: 博客搬家到美国Linux VPS上了!
下一篇: [收藏]中国B2C网站集合

相关文章

访客评论

Gravatar
# # 只带月份的归档
#      rewrite "^/date/([0-9]{6})/?([0-9]+)?/?$" /index.php?action=article&setdate=$1&page=$2 last;
这个不对。我在nginx上就是404了
Post by ik on 2009-08-30, 12:14 PM #1
Gravatar
引用 ik 说过的话:
# # 只带月份的归档
#      rewrite "^/date/([0-9]{6})/?([0-9]+)?/?$" /index.php?action=article&setdate=$1&page=$2 last;
这个不对。我在nginx上就是404了

这条规则在我配置的nginx上没有任何问题的,不然访问我的月份归档应该也是404!
你可以看下:http://blog.is36.com/date/200906/
Post by 正冰 on 2009-09-02, 10:57 AM #2
Gravatar
rewrite ^/(comments|tagslist|trackbacks|article)/?([0-9]+)?/?$ /index.php?action=$1&page=$2 last;
记录不存在
rewrite ^/category/([0-9]+)/?([0-9]+)?/?$ /index.php?action=article&cid=$1&page=$2 last;
不解析
# 文章
rewrite ^/archives/([0-9]+)/?([0-9]+)?/?$ /index.php?action=show&id=$1&page=$2 last;
不存在
在windows环境NPMserv下测试的
Post by ucn on 2011-11-26, 9:35 AM #3
Gravatar
引用 ucn 说过的话:
rewrite ^/(comments|tagslist|trackbacks|article)/?([0-9]+)?/?$ /index.php?action=$1&page=$2 last;
记录不存在
rewrite ^/category/([0-9]+)/?([0-9]+)?/?$ /index.php?action=article&cid=$1&page=$2 last;
不解析
# 文章
rewrite ^/archives/([0-9]+)/?([0-9]+)?/?$ /index.php?action=show&id=$1&page=$2 last;
不存在
在windows环境NPMserv下测试的

只适用于linux环境下哦,windows下我没测试过。
Post by 正冰 on 2011-12-01, 2:36 PM #4

发表评论