找回密码
 立即注册

只需一扫,快速开始

QQ登录

只需一步,快速开始

搜索
查看: 25648|回复: 1

[技术经验] 今天有人问关于目录伪静态,下面贴出教程【未完善】

[复制链接]

8万

主题

431

回帖

9万

积分

管理员

积分
94388
QQ
发表于 2015-10-29 10:53:35 | 显示全部楼层 |阅读模式
1、时间不多,主要是仿百度贴吧的风格。其实还不完善,只做了nginx规则重写。后台给的是没法用的。原因是我添加了? 如果没有问号可以直接用。2、由于时间不多,还没完善,手里忙完了会处理。
3、修改后更新后台缓存
4、做了兼容老版本的伪静态规则处理,防止修改后出现大面积404错误,例如访问https://www.playzhan.com/thread-6-1-1.html 这种仍然可以的。
5、目前还是有很多地方没有完善。
后台规则截图:
伪静态.JPG
例如贴吧:
http://tieba.baidu.com/p/4112729693
http://tieba.baidu.com/p/4112729693?pn=2

我们修改后样式:
https://www.playzhan.com/p/6
https://www.playzhan.com/p/6?pn=2

2016年更新,几个月的测试,基本上是ok了,一个测试网址没有发现异常的404错误。
  1. rewrite ^([^\.]*)/thread-(\w+)-(\d+)-(\d+).html$ $1/p/$2?pn=$3 permanent;
  2. rewrite ^([^\.]*)/forum-(\w+)-([0-9]+)\.html$ $1/f/$2?pn=$3 permanent;
  3. if ( $query_string ~ "pn+" ){
  4.         rewrite ^([^\.]*/p/.*)$ $1####$query_string;
  5.         rewrite ^([^\.]*/f/.*)$ $1####$query_string;
  6.         rewrite ^([^\.]*/article/.*)$ $1####$query_string;
  7. }
  8. if ( $query_string ~ "mod+" ){
  9.         rewrite ^([^\.]*/p/.*)$ $1####$query_string;
  10. }
  11. if ( $query_string ~ "page+" ){
  12.         rewrite ^([^\.]*)/archiver/tid-(\w+).html$ $1/p/$2 permanent;
  13.         rewrite ^([^\.]*)/archiver/fid-(\w+).html$ $1/f/$2 permanent;
  14. }
  15. rewrite ^([^\.]*)/p/forum\.php####mod\=viewthread\&tid\=(\d+).*$ $1/p/$2 permanent;
  16. rewrite ^([^\.]*/p/[0-9]+)$ $1####pn=1;
  17. rewrite ^([^\.]*/article/[0-9]+)$ $1####pn=1;
  18. rewrite ^([^\.]*/f/\w+)$ $1####pn=1;
  19. rewrite ^([^\.]*/p/[0-9]+)####([^p]*)$ $1####pn=1&$2;
  20. rewrite ^([^\.]*)/space/username/(home\.php)$ $1$2?$query_string last;
  21. rewrite ^([^\.]*)/article/([0-9]+)####pn=([0-9]+)$ $1/portal.php?mod=view&aid=$2&page=$3 last;
  22. rewrite ^([^\.]*)/f/(\w+)####pn=([0-9]+)$ $1/forum.php?mod=forumdisplay&fid=$2&page=$3 last;
  23. rewrite ^([^\.]*)/p/([0-9]+)####pn=([0-9]+)(.*)$ $1/forum.php?mod=viewthread&tid=$2&page=$3$4 last;
  24. rewrite ^([^\.]*)/group/([0-9]+)####pn=([0-9]+)$ $1/forum.php?mod=group&fid=$2&page=$3 last;
  25. rewrite ^([^\.]*)/topic/(.+)$ $1/portal.php?mod=topic&topic=$2 last;
  26. rewrite ^([^\.]*)/space/(username|uid)/(.+)$ $1/home.php?mod=space&$2=$3 last;
  27. rewrite ^([^\.]*)/blog/([0-9]+)/([0-9]+)$ $1/home.php?mod=space&uid=$2&do=blog&id=$3 last;
  28. rewrite ^([^\.]*)/(fid|tid)/([0-9]+)$ $1/index.php?action=$2&value=$3 last;
  29. rewrite ^([^\.]*)/([a-z]+[a-z0-9_]*)/([a-z0-9_\-]+)$ $1/plugin.php?id=$2:$3 last;
复制代码




2015年11月18日,修复一些bug

nginx的伪静态规则
  1. #请求中问号的处理
  2. if ( $query_string ~ "pn=[0-9]+&from=[0-9]+" ){
  3.         rewrite ^([^\.]*/p/[0-9]+).*$ $1####$query_string;
  4. }
  5. if ( $query_string ~ "pn=[0-9]+" ){
  6.         rewrite ^([^\.]*/\w+/\w+).*$ $1####$query_string;
  7. }
  8. #######自动补齐参数
  9. #/p/1345
  10. #/p/1345####pn=1&from=1?pn=1&from=1
  11. rewrite ^([^\.]*/p/[0-9]+)$ $1####pn=1&from=1;
  12. #/f/40
  13. #f/\w+?pn=1
  14. rewrite ^(/f/\w+)$ $1####pn=1;
  15. ########兼容性重定向,将以前老的伪静态规则重定向为新的
  16. #thread-7-1-1.html
  17. #/p/7####pn=1&from=1
  18. #rewrite ^([^\.]*)/thread-(\d+)-(\d+)-(\d+).html$ $1/p/$2####pn=$3&from=$4;
  19. rewrite ^([^\.]*)/thread-(\d+)-(\d+)-(\d+).html$ $1/p/$2?pn=$3 permanent;

  20. rewrite ^([^\.]*)/p/([0-9]+)####pn=([0-9]+)&from=([0-9]+)$ $1/forum.php?mod=viewthread&tid=$2&extra=page%3D$4&page=$3 last;
  21. #兼容没有from的参数
  22. rewrite ^([^\.]*)/p/([0-9]+)####pn=([0-9]+)$ $1/forum.php?mod=viewthread&tid=$2&extra=page%3D$4&page=1 last;
  23. rewrite ^([^\.]*)/f/(\w+)####pn=([0-9]+)$ $1/forum.php?mod=forumdisplay&fid=$2&page=$3 last;
  24. rewrite ^([^\.]*)/article/([0-9]+)####pn=([0-9]+)$ $1/portal.php?mod=view&aid=$2&page=$3 last;
  25. rewrite ^([^\.]*)/group/([0-9]+)####pn=([0-9]+)$ $1/forum.php?mod=group&fid=$2&page=$3 last;
  26. rewrite ^([^\.]*)/blog/([0-9]+)/([0-9]+)$ $1/home.php?mod=space&uid=$2&do=blog&id=$3 last;
  27. rewrite ^([^\.]*)/topic/(.+)$ $1/portal.php?mod=topic&topic=$2 last;
  28. rewrite ^([^\.]*)/space/(username|uid)/(.+)$ $1/home.php?mod=space&$2=$3 last;
  29. rewrite ^([^\.]*)/(fid|tid)/([0-9]+)$ $1/index.php?action=$2&value=$3 last;
  30. rewrite ^([^\.]*)/([a-z]+[a-z0-9_]*)/([a-z0-9_\-]+)$ $1/plugin.php?id=$2:$3 last;

  31.         #rewrite ^([^\.]*)/topic-(.+)\.html$ $1/portal.php?mod=topic&topic=$2 last;
  32.         #rewrite ^([^\.]*)/article-([0-9]+)-([0-9]+)\.html$ $1/portal.php?mod=view&aid=$2&page=$3 last;
  33.         #rewrite ^([^\.]*)/forum-(\w+)-([0-9]+)\.html$ $1/forum.php?mod=forumdisplay&fid=$2&page=$3 last;
  34.         #rewrite ^([^\.]*)/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ $1/forum.php?mod=viewthread&tid=$2&extra=page%3D$4&page=$3 last;
  35.         #rewrite ^([^\.]*)/group-([0-9]+)-([0-9]+)\.html$ $1/forum.php?mod=group&fid=$2&page=$3 last;
  36.         #rewrite ^([^\.]*)/space-(username|uid)-(.+)\.html$ $1/home.php?mod=space&$2=$3 last;
  37.         #rewrite ^([^\.]*)/blog-([0-9]+)-([0-9]+)\.html$ $1/home.php?mod=space&uid=$2&do=blog&id=$3 last;
  38.         #rewrite ^([^\.]*)/(fid|tid)-([0-9]+)\.html$ $1/index.php?action=$2&value=$3 last;
复制代码






nginx伪静态规则:
  1. #请求中问号的处理
  2. if ( $query_string ~ "pn=[0-9]+&from=[0-9]+" ){
  3.         rewrite ^([^\.]*/p/[0-9]+).*$ $1####$query_string;
  4. }
  5. if ( $query_string ~ "pn=[0-9]+" ){
  6.         rewrite ^([^\.]*/\w+/\w+).*$ $1####$query_string;
  7. }
  8. #######自动补齐参数
  9. #/p/1345
  10. #/p/1345####pn=1&from=1?pn=1&from=1
  11. rewrite ^([^\.]*/p/[0-9]+)$ $1####pn=1&from=1;
  12. #/f/40
  13. #f/\w+?pn=1
  14. rewrite ^(/f/\w+)$ $1####pn=1;
  15. ########兼容性重定向,将以前老的伪静态规则重定向为新的
  16. #thread-7-1-1.html
  17. #/p/7####pn=1&from=1
  18. rewrite ^([^\.]*)/thread-(\d+)-(\d+)-(\d+).html$ $1/p/$2####pn=$3&from=$4;
  19. rewrite ^([^\.]*)/p/([0-9]+)####pn=([0-9]+)&from=([0-9]+)$ $1/forum.php?mod=viewthread&tid=$2&extra=page%3D$4&page=$3 last;
  20. #兼容没有from的参数
  21. rewrite ^([^\.]*)/p/([0-9]+)####pn=([0-9]+)$ $1/forum.php?mod=viewthread&tid=$2&extra=page%3D$4&page=1 last;
  22. rewrite ^([^\.]*)/f/(\w+)####pn=([0-9]+)$ $1/forum.php?mod=forumdisplay&fid=$2&page=$3 last;
  23. rewrite ^([^\.]*)/article/([0-9]+)####pn=([0-9]+)$ $1/portal.php?mod=view&aid=$2&page=$3 last;
  24. rewrite ^([^\.]*)/group/([0-9]+)####pn=([0-9]+)$ $1/forum.php?mod=group&fid=$2&page=$3 last;
  25. rewrite ^([^\.]*)/blog/([0-9]+)/([0-9]+)$ $1/home.php?mod=space&uid=$2&do=blog&id=$3 last;
  26. rewrite ^([^\.]*)/topic/(.+)$ $1/portal.php?mod=topic&topic=$2 last;
  27. rewrite ^([^\.]*)/space/(username|uid)/(.+)$ $1/home.php?mod=space&$2=$3 last;
  28. rewrite ^([^\.]*)/(fid|tid)/([0-9]+)$ $1/index.php?action=$2&value=$3 last;
  29. rewrite ^([^\.]*)/([a-z]+[a-z0-9_]*)/([a-z0-9_\-]+)$ $1/plugin.php?id=$2:$3 last;
复制代码





回复

使用道具 举报

0

主题

1

回帖

14

积分

新手站长

积分
14
发表于 2016-6-30 19:07:01 | 显示全部楼层
请教一个问题。
我的是nginx。
通过修改了部分代码。其实也就是在 帖子URL静态那里加了一个fid。
想实现的是, www.augus.me/zhuti.html  这个可以访问了。 然后主题下面的帖子链接为。 www.augus.me/zhuti/tiezi-1-1-1.html
帖子的url 访问是  403错误。。
后台设置为
论坛主题列表页         {fid}.html     可以访问。。   
规则  rewrite ^([^\.]*)/(\w+)\.html$ "$1/forum.php?mod=forumdisplay&fid=$2&page={page} last";

论坛主题内容页  {fid}/thread-{tid}-{page}-{prevpage}.html    403错误。
规则 rewrite ^([^\.]*)//thread-([0-9]+)-([0-9]+)-([0-9]+)$ "$1/forum.php?mod=viewthread&tid=$2&extra=page%3D$4&page=$3 last";

修改的代码为  

  1. elseif($type == 'forum_viewthread') {
  2.                 // list(,,, $fid, $tid, $page, $prevpage, $extra) = func_get_args();
  3.                 list(,,, $tid, $page, $prevpage, $extra) = func_get_args();
  4.                 // select fid from tables;
  5.                 $fid = DB::result_first("SELECT fid FROM ".DB::table('forum_thread')." WHERE tid = '$tid'");
  6.                 $r = array(
  7.                         // '{fid}' => empty($_G['setting']['forumkeys'][$fid]) ? $fid : $_G['setting']['forumkeys'][$fid],
  8.                         '{fid}' => empty($_G['setting']['forumkeys'][$fid]) ? $fid : $_G['setting']['forumkeys'][$fid],
  9.                         '{tid}' => $tid,
  10.                         '{page}' => $page ? $page : 1,
  11.                         '{prevpage}' => $prevpage && !IS_ROBOT ? $prevpage : 1,
  12.                 );
复制代码
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册   

本版积分规则

QQ|Archiver|手机版|小黑屋|站秘书 ( 蜀ICP备15034504号-3 )

GMT+8, 2024-5-6 04:38 , Processed in 0.089455 second(s), 43 queries .

Powered by Discuz! X3.5

Copyright © 2001-2024 Tencent Cloud.

快速回复 返回顶部 返回列表