请选择 进入手机版 | 继续访问电脑版
开启辅助访问
 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

点击进入授权页面

只需一步,快速开始

[Discuz教程] Discuz!X2伪静态规则简介

回复:0 | 查看:1192 | kirito 发表于 2018-1-17 00:01:04 |阅读模式 |复制链接
伪静态在对于站点来说,一是有利于对搜索引擎seo优化,尤其是站点经过多次调整,部分URL已经失效,再一个可以把对外的URL进行规范化,也利于站点的安全。
Discuz! X2后台 SEO设置中,只需站长选择要进行拟静态的项目,然后查看对应规则,添加到服务器即可,很方便。但有些站长对默认规则不太满足,还需进行优化,修改。那么,就Discuz! X2的伪静态规则进行一下讲解,本例基于Apache的,其它版本再续。
首先看看Discuz! X2全部项目的拟静态规则,拿虚拟主机举例:

  • # 将 RewriteEngine 模式打开
  • RewriteEngine On

  • # 修改以下语句中的 /discuz 为你的论坛目录地址,如果程序放在根目录中,请将 /discuz 修改为 /
  • RewriteBase /discuz

  • # Rewrite 系统规则请勿修改
  • RewriteCond %{QUERY_STRING} ^(.*)$
  • RewriteRule ^topic-(.+).html$ portal.php?mod=topic&topic=$1&%1
  • RewriteCond %{QUERY_STRING} ^(.*)$
  • RewriteRule ^article-([0-9]+)-([0-9]+).html$ portal.php?mod=view&aid=$1&page=$2&%1
  • RewriteCond %{QUERY_STRING} ^(.*)$
  • RewriteRule ^forum-(w+)-([0-9]+).html$ forum.php?mod=forumdisplay&fid=$1&page=$2&%1
  • RewriteCond %{QUERY_STRING} ^(.*)$
  • RewriteRule ^thread-([0-9]+)-([0-9]+)-([0-9]+).html$forum.php?mod=viewthread&tid=$1&extra=page%3D$3&page=$2&%1
  • RewriteCond %{QUERY_STRING} ^(.*)$
  • RewriteRule ^group-([0-9]+)-([0-9]+).html$ forum.php?mod=group&fid=$1&page=$2&%1
  • RewriteCond %{QUERY_STRING} ^(.*)$
  • RewriteRule ^space-(username|uid)-(.+).html$ home.php?mod=space&$1=$2&%1
  • RewriteCond %{QUERY_STRING} ^(.*)$
  • RewriteRule ^blog-([0-9]+)-([0-9]+).html$ home.php?mod=space&uid=$1&do=blog&id=$2&%1
  • RewriteCond %{QUERY_STRING} ^(.*)$
  • RewriteRule ^archiver/(fid|tid)-([0-9]+).html$ archiver/index.php?action=$1&value=$2&%1

复制代码
RewriteEngine On这个是必须的,开启状态。
修改以下语句中的 /discuz 为你的论坛目录地址,如果程序放在根目录中,请将 /discuz 修改为 /。
这句话很多人不太理解,它的意思就是说,虚拟主机往往根目录不是对外能直接访问的,如果你站点是装在类似/discuz/这样的目录下,那么,/discuz就改成你安装站点的目录,如/www、/wwwrooot,如果是直接安装在根目录了,那就去掉discuz,只留个/。
以下的语句,我们发现,只有两种:
RewriteCond
RewriteRule
RewriteCond 是重写条件,它符合条件了,就执行RewriteRule ,即重写规则。
它俩的区别在于,RewriteCond是字符串在前面,正则表达式在后面,而RewriteRule正则表达式在前,字符串在后。
手册中的解释:
RewriteRule 为重写引擎定义重写规则,语法,RewriteRule Pattern Substitution [flags]
RewriteRule指令是重写引擎的根本。此指令可以多次使用。每个指令定义一个简单的重写规则。这些规则的定义顺序尤为重要——在运行时,规则是按这个顺序逐一生效的。
[url=]Pattern[/url]是一个作用于当前URL的perl兼容的[url=]正则表达式[/url]。"当前URL"是指该规则生效时刻的URL的值。它可能与被请求的URL截然不同,因为其他规则可能在此之前已经发生匹配并对它做了改动。
重写规则中的[url=]Substitution[/url]是当原始URL与Pattern相匹配时,用来替代(或替换)的字符串。
简单点说,Pattern就是参数,一般为一些文件的扩展名,Substitution是用来替换前面用的。
举例说明:
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^forum-(w+)-([0-9]+).html$ forum.php?mod=forumdisplay&fid=$1&page=$2&%1
请求的字符串%{QUERY_STRING}为任意^(.*)$时,执行RewriteRule,当来访地址为^forum-(w+)-([0-9]+).html$这样的地址,也就是forum-(数字、字母、下划线)-(数字).html这样的地址,则Apache把它解析为forum.php?mod=forumdisplay&fid=$1&page=$2&%1也就是forum.php?mod=forumdisplay&fid=$1($1的意思是前面的(w+))&page=$2($2的意思是([0-9]+))&%1(%1这里就可以忽视了,其它字符串程序就不做处理了。)。
很多情况下,站长做过搬家,调整版块等等,需要做些跳转,也可以通过这个拟静态满足需求。这里就不一而足。
回复

使用道具 举报

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

本版积分规则

快速回复 返回列表 客服中心





企业站定制,我们更专业!

联系我们
快速回复 返回顶部 返回列表