• SEO是一个到底多么牛叉的行业?SEO是一个到底多么牛叉的行业?
  • 郑州SEO郑州seo
  • 郑州SEO你只看到了别人的成功,却看不到别人默默的
  • 郑州SEOSEO切莫浪费时间在不必要的问题上
  • 1
  • 2
  • 3
  • 4

整理下Hdwiki在apache、iis下的rewrite规则自己留着备用

时间:2015-4-24 作者:问候seo

整理下apache、iis下的rewrite规则自己留着备用!做网站的,现在遇见最多的是动态网站,但是动态网站也遇到了一个最大的问题就是伪静态,为了搜索引擎的快速收录吧,毕竟搜索引擎对于静态页面还是很感兴趣的,本人最近在搞一个已经很少的人在玩的程序hdwikicms,现在已经没有官方人员违护了,所以导致遇到的问题没法解决,今天把我遇到的问题自己整理下备以后用吧!
1、伪静态简介 伪静态就是:动态网页通过重写URL的方法实现去掉动态网页的参数,但在实际的网页目录中并没有必要实现存在重写的页面。 伪静态的目的 最主要的就是迎合搜索引擎方便搜索引擎蜘蛛(Spider)来抓取网页上的相关内容! 方便用户访问网站 一个好网页如果是动态的用户在相互传播时感觉对方信任度不会高但一看一个静态页相对用户对网页的信任度就高点而且伪静态的后缀方式基本雷同 一看就知道是伪静态还是真的静态网页!伪静态对SEO有利,收录比动态会更好。

2、设置伪静态的要求 设置伪静态的要求,不同的服务器要求不一样,apache需要rewrite模块,iis需要安装ISAPI_rewrite软件.(若是虚拟主机,可向空间商咨询),独立主机的可以自行设置 一般apache默认都会有rewrite模块并开启,如果没开启,可打开apache的配置文件httpd.conf文件,LoadModule rewrite_module modules/mod_rewrite.so,将前面的井号去掉保持重启apache即可 以下重点说说iis的ISAPI_rewrite软件,
在 IIS 管理器里选择网站,右键选择“属性”,如图一

Hdwiki在apache、iis下的rewrite规则
apache、iis 下的 rewrite 规则

选择你的站点,比方是默认站点,右键单击,选择属性,如图二

Hdwiki在apache、iis下的rewrite规则

查看isapi筛选器

选择你的站点,比方是默认站点,右键单击,选择属性,如图二
添加ISAPI筛选器,要选择的isapi.dll可以在网上下载得到

选择你的站点,比方是默认站点,右键单击,选择属性,如图二
确定后查看刚刚添加是否成功

选择你的站点,比方是默认站点,右键单击,选择属性,如图二6选择你的站点,比方是默认站点,右键单击,选择属性,如图二
当状态时绿色向上的箭头的时候表示添加成功了,当rewrite环境配置好后就可以开启rewrite了。
3、开启伪静态 当确认已经安装rewrite模块后,便可开启hdwiki后台的rewrite规则了,apache用户开启后一般不会存在什么问题,系统已经自动生成了.htaccess文件, iis用户需要在论坛目录下手动添加httpd.ini文件(虚拟主机用户可咨询空间商该文件存在的位置)。
4、rewrite规则 hdwiki4.1的手册中有apache,iis和nginx三种服务器下的rewrite规则
apache下的规则
<IfModule mod_rewrite.c>
RewriteEngine on
#表示开启rewrite RewriteBase /hdwiki4/wikiframe/
#设置目录级重写的基准URL,指站点的路径
RewriteCond %{REQUEST_FILENAME} !-f
#RewriteCond是指定义重写发生的条件,就是说一个RewriteRule 前面可以有多个RewriteCond,就是说,当符合RewriteCond 时,后面的RewriteRule 才会去执行,%{REQUEST_FILENAME}表示请求的文件名 !表示非 -f表示常规文件 ,该句表示请求的文件名为一个非常规文件时继续执行,否则不执行(常规文件时指a.txt这样的,可以直接下载的那种文件)
RewriteCond %{REQUEST_FILENAME} !-d #该句表示请求的文件名不是一个目录继续执行 RewriteRule ^.*$ index.php?$0 #当上面两个条件都符合了,才会执行这条规则,该规则指,例如 abc会被指向index.php?abc </IfModule> 以上这些代码中,有很多正则表达式,就RewriteRule ^.*$ index.php?$0为例做讲解 ^表示以什么什么开始 ,比方^a 表示以a字符开始 ,’.’点这个字符时通配符,表示任意字符,*表示前面的表达式0到n个,.*表示0个或n个任意字符,$表示以什么结束,b$表示以b字符结束 $0表示匹配上的所有字符 再看这个实例 RewriteRule ^/wiki/(.*)$ /index\.php\?doc-innerlink-$1 这个里面有$1表示^/wiki/(.*)$这个里面括号中匹配的字符串,如果后面还有括号的,就是$2$3…. iis的rewrite规则基本和这个一样,ISAPI高版本中兼容上述写法,具体的可参考手册 另外要注意的是, 很多iis的用户将hdwiki的规则和其他系统如discuz的规则写在了一起,导致iis冲突,一般可以通过文件夹名称来区别 例如,有些用户在httpd.ini中这样写
RewriteRule ^/(.*)/(.*)\.(htm|html|shtml|tpl|asp|jsp|php|do)$ /baike/index\.php\?$1 可以改为RewriteRule ^/baike/(.*)\.(htm|html|shtml|tpl|asp|jsp|php|do)$ /baike/index\.php\?$1 还有好多用户iis下不是用的这种通用写法,而是和dz一样写的是具体的,比如 RewriteRule ^/baike/doc-view-(.*)$ /baike/index\.php\?doc-view$1 这种写法完全可以,唯一不方便的就是如果hdwiki在新添加的功能,这个url可能无法被解析,因为没有相应的规则对应,大家可以依葫芦画瓢照着写一个就可以了
nginx下的写法
if ($request_filename !~* (.*)\.(css|js|gif|jpg|png|xml)){
# 修改以下语句中的 /hdwiki 为你的HDWiki目录地址,如果程序放在根目录中,请将 /hdwiki 修改为 /
rewrite ^(/hdwiki)/(.*)$ $1/index.php?$2; }
仅开启以 http://mydomain/词条名 的rewrite规则,则添加如下代码:
# 修改以下语句中的 /hdwiki 为你的HDWiki目录地址,如果程序放在根目录中,请将 /hdwiki 修改为 /
rewrite ^(/hdwiki)/wiki/(.*)$ $1/index.php?doc-innerlink-$2 last; 其他服务器的rewrite规则,都是用正则表达式表示,写法略有不同 例如lighttpd的写法如下(
xxx/bbs/viewthread.php?tid=13353&highlight=rewrite) url.rewrite = ( “^(.*)\/(attachment|category|comment|doc|edition|list|pms|reference|search|synonym|user|plugin|admin|pic|gift)([^\/]*)$” => “$1/index.php?$2$3” )
5、伪静态的缺点 流量稍大一些使用伪静态就出现CPU使用超负荷,由于伪静态是用正则判断而不是真实地址,分辨到底显示哪个页面的责任也由直接指定转由CPU来判断了,所以CPU占有量的上升,确实是伪静态最大的弊病. 不过对于流量不大,但需要收录量的个人站点来说,伪静态算是个不错的选择
6、关闭hdwiki伪静态 当伪静态无法正常使用时,部分用户反映无法正常登录到后台关闭伪静态, 新补丁中确保开启rewrite伪静态也能正常登录,可下载4.1的补丁包 对于没有升级或没有打补丁的而无法登陆的同学,可以使用工具箱登陆到后台。

声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:1448228637@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。