HOME
BBS
深山帮帮欢迎您,您可以注册或者
qq登录只需一步,快速开始
深山旅行社网站管理系统开发完成,欢迎各位网友测试! 点这里测试
565449214 给站长留言
订阅本栏目 RSS您所在的位置: 深山工作室 > ASP学习 > 正文

httpd.ini中的RewriteRule、RewriteCond规则了解以有二级域名解析实例

 2015-10-16 19:52:57  字体:  浏览 5673 我要评论
研究了半天,网上个视频教程也没有看了半天,看懂一点RewriteRule规则,和大家分享一下经验:

.htaccess 文件中url重定向部分的规则是如下这样形式的:

RewriteCond ¥%……&*()
RewriteRule *&……%……&*
RewriteRule *&……%……&*
RewriteCond ¥%……&*()
RewriteRule *&……%……&*
RewriteRule *&……%……&*

有的可能只有RewriteRule 组成的url重定向规则部分
RewriteRule *&……%……&*
RewriteRule *&……%……&*
.........

那么RewriteCond RewriteRule  两个是什么含义呢。其实RewriteCond 和if判读语句的作用很相似。 当url地址匹配到其中一个RewriteCond 的规则时就会再这个RewriteCond 下面包含的RewriteRule 中规则进行匹配来重定向操作,什么意思呢,直接上实例例子:
来看通过的一个RewriteRule URL重定向来进行二级域名解析的实例吧:
首先说明一下网站配置:
网站phpcms+discuz来搭建的: 目录机构是phpcms装到根目录。discuz 装根目录的一个forum文件夹里;
想这样:
/index.html     pc的首页
/ask/ pc系统中自带的问答模块
/forum/ dx安装位置
/forum/forum.php  论坛的地址
/forum/home.php   空间的地址
/.....
/.....  其他的文件或夹了
给我们网站暂时起个名帅点的域名吧:www.xxoo.com
目前网站各个模块访问的地址是这样的:
网站首页 www.xxoo.com
问答 www.xxoo.com/ask
论坛 www.xxoo.com/forum/forum.php  或www.xxoo.com/forum/
家园 www.xxoo.com/forum/home.php
这个很别扭对不对。我们是个很小的大网站嘛,这么也的显的专业一点么:
我们想以以下的形式来访问网站:
网站首页 www.xxoo.com
问答 ask.xxoo.com
论坛 bbs.xxoo.com
家园 space.xxoo.com
怎么操作呢,一步步来看了:
首先吧到自己的域名管理页面吧自己的xxoo.com做一个泛解析到自己主机的ip地址。(泛解析和www的域名解析一样都是A记录解析到一个ip地址上面。想我们网站解析后的形式是*.xxoo.com  到一个ip地址上)
好了,然后配置好apache或iis上的 rewrite 模块并开启:网上教程很多,大家搜索一下就知道怎么配置了很简单,提示一下大家。iis上的rewrie模块建议安装ISAPI_Rewrite 3的版本,地址如下:http://www.helicontech.com/download-isapi_rewrite3.htm  3版本好像已经兼容了apache文件.htaccess 文件里的RewriteRule 规则,等于apache和安装ISAPI_Rewrite 3的iis服务器的url重定向配置文件的规则是通用的。还有一点就是ISAPI_Rewrite3以前的版本的url重写的配置文件好像是http.conf 而3版本的配置文件也是 .htaccess文件了。 吧 .htaccess文件放到对应的目录下就其作用了;
iis下的ISAPI_Rewrite 3安装好以后 网站的属性里会多出一个ISAPI_Rewrite选项卡,如下图“
点击在新窗口中打开图片
第二个红框是配置文件的路径  第三个红框是配置文件的内容了;
点击在新窗口中打开图片
而网站原来的ISAPI筛选器部分,后来变成空的了。。我也忘了是原来没有配置还是配置了后没了。不过现在好像不影响url重写,所以我也没有在添加。大家如果不成功的话,吧ISAPI_Rewrite安装目录下的ISAPI_Rewrite.dll文件添加上就行了。文件名一般是rewrite

我们把我们的 .htaccess文件放到网站的跟目录下了;
.htaccess文件的内容如下:
RewriteCond %{HTTP_HOST} ask.xxoo.com
RewriteRule ^(index.html)?$ /ask/
RewriteRule ^(.*)list-([0-9]+)-([a-z]+)\.html$ $1/ask/list.php?catid=$2&action=$3
RewriteRule ^(.*)show-([0-9]+)\.html$ $1/ask/show.php?id=$2

RewriteCond %{HTTP_HOST} space.xxoo.com
RewriteRule ^(index.html)?$ /forum/forum.php    (注:此处dx系统的二级域名设置错误,少了一步,空间,论坛的二级域名设置错误,上面的问答模块二级域名设置没有错误,请看教程四)
错误原因:原来我设置错误的原因是我想直接通过url重写来做空间、论坛的二级域名设置,但是dx装在根目录的/forum/文件夹里。这样也可以设置二级域名,但会报错,比如,论坛虽然可以过于,但是发帖,等操作连接还是错误的,会自动吧安装目录添加到url中。处处出错,其实一开始我走的道路都是错误的。
上面只做了问答模块和空间模块的url重写。我们来分析一下代码。
上面的代码中有两个 RewriteCond 段,意思是一个url地址会于RewriteCond 后面的正则匹配,如果成功则与对于RewriteCond 下的RewriteRule 进行在匹配,如果还能配的上url重定向的 RewriteRule 第二个参数里的url地址了,
url解析流程是这样的:我们咋地址栏中输入 ask.xxoo.com ,域名泛解析到我们规定的ip地址也就是网站上,网站启用url重写来过滤url地址,过滤ask.xxoo.com被第一个RewriteCond命中,然后再与这个RewriteCond下面所属的3个RewriteRule匹配,被第一个RewriteRule命中,命中返回的是/ask/  所以ask.xxoo.com被重定向到了ask.xxoo.com/ask/文件夹了
分析代码
RewriteCond 后面的 %{HTTP_HOST} 是域名 
RewriteCond %{HTTP_HOST} space.xxoo.com 表示地址栏中的域名是否等于space.xxoo.com这里也可以使用正则 如:RewriteCond %{HTTP_HOST} space([1-9]).xxoo.com 这匹配的url包含了space1.xxoo.com  space2.xxoo.com space2.xxoo.com  .......space9.xxoo.com 这9个域名
RewriteRule ^(index.html)?$ /ask/   匹配的是网站但域名ask.xxoo.com或ask.xxoo.com/index.html这两个地址: 重定向的是ask.xxoo.com/ask
RewriteRule ^(.*)list-([0-9]+)-([a-z]+)\.html$ $1/ask/list.php?catid=$2&action=$3
匹配地址包含
ask.xxoo.com/list-3-all.html 重定向的是ask.xxoo.com/ask/list.php?catid=3&action=all
ask.xxoo.com/list-45-high.html 重定向的是ask.xxoo.com/ask/list.php?catid=45&action=hight
RewriteRule ^(.*)show-([0-9]+)\.html$ $1/ask/show.php?id=$2
匹配地址包含
ask.xxoo.com/show-3.html 重定向的是ask.xxoo.com/ask/show.php?id=3
ask.xxoo.com/show-21.html 重定向的是ask.xxoo.com/ask/show.php?id=21
。。。。。
总结:
RewriteRule 规则形式是:
RewriteRule  正则配表达式   url重定向地址     重定向地址中的参数都是通过正则用的引用来处理 :
RewriteCond 第一个参数中用到的 %{ NAME_OF_VARIABLE } ,服务器变量。 变量的名字如下表(分类显示)
点击在新窗口中打开图片
个别解析:
HTTP_HOST     域名
HTTP_REFERER 来源域名   判断是是否是盗链过来时用到
REMOTE_ADDR   客户端ip地址
REMOTE_NAME 客户端主机名
HTTP_USER_AGENT   浏览器标识符, 是ie还是火狐
HTTP_ACCEPT  当前请求的 Accept: 头信息的内容。
更多RewriteCond指令格式RewriteRule指令格式跟多复杂知识
 http://blog.sina.com.cn/s/blog_4b9b714a0100ps5n.html
http://apps.hi.baidu.com/share/detail/31361364
Ads loading...
相关阅读
( 2016-8-22 08:56:32 )ASP连接各种数据库的方法
( 2016-8-15 19:04:22 )asp获得系统Unix时间戳与将Unix时间戳转为正常日期
( 2016-8-2 21:57:20 )关于SQL2008 “不允许保存更改。您所做的更改要求删除并重新创建以下表。您对无法重新创建的标进行了更改或者启用了‘阻止保存要求重新创建表的更改’” 解决方案
( 2016-6-16 11:49:35 )access数据库做的网站出现.ldb不能删除超过2KB之后就会网站访问不了数据库,提示数据库不存在
( 2016-6-7 15:48:25 )asp中最难发现的错误由最简单的程序引起
( 2016-3-12 14:58:19 )Asp得到当月天数的函数方法
( 2015-12-11 22:28:01 )在服务器上新建网站,在服务器用域名能访问,但是外网访问不了的解决办法
( 2015-10-22 17:42:13 )深山旅行社网站管理系统5.0发布
共有0条关于《httpd.ini中的RewriteRule、RewriteCond规则了解以有二级域名解析实例》的评论
发表评论
正在加载评论……
返回顶部发表评论
呢 称:
表 情:
内 容:
评论内容:不能超过 400 字,需审核,请自觉遵守互联网相关政策法规。
验证码: 验证码 
深山工作室网友评论声明,请自觉遵守互联网相关政策法规。

您发布的评论即表示同意遵守以下条款:
一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家、社会、集体和公民的合法权益;
二、不得发布国家法律、法规明令禁止的内容;互相尊重,对自己在本站的言论和行为负责;
三、本站对您所发布内容拥有处置权。

Ads loading...
更多信息>>栏目类别选择
rss学习
个人空间
网站设计
网站公告
下载
photoshop学习
ASP学习
DIV+CSS学习
SEO搜索引擎忧化
java学习
HTML学习
网站信息
网站类信息
更多>>同类信息
ASP连接各种数据库的方法
asp获得系统Unix时间戳与将Unix时间戳转为正常日期
access数据库做的网站出现.ldb不能删除超过2KB之后就会网站访问不了数据库,提示数据库不存在
asp中最难发现的错误由最简单的程序引起
Asp得到当月天数的函数方法
在服务器上新建网站,在服务器用域名能访问,但是外网访问不了的解决办法
httpd.ini中的RewriteRule、RewriteCond规则了解以有二级域名解析实例
httpd.ini一些参数说明
Ads loading...
更多>>最新添加文章
ASP连接各种数据库的方法
asp获得系统Unix时间戳与将Unix时间戳转为正常日期
关于SQL2008 “不允许保存更改。您所做的更改要求删除并重新创建以下表。您对无法重新创建的标进行了更改或者启用了‘阻止保存要求重新创建表的更改’” 解决方案
access数据库做的网站出现.ldb不能删除超过2KB之后就会网站访问不了数据库,提示数据库不存在
asp中最难发现的错误由最简单的程序引起
Asp得到当月天数的函数方法
在服务器上新建网站,在服务器用域名能访问,但是外网访问不了的解决办法
深山旅行社网站管理系统5.0发布
  • 业务 QQ:565449214
  • 手机:139 6134 7334
更多>>随机抽取信息
常用CSS缩写语法总结
asp在线把整站打包成为.mdb形式文件
ASP.NET 2和IIS 7.0发生不兼容变化
滑动展开/收缩广告(兼容ff/ie6/ie7)
纯div+css制作的弹出菜单-05
asp读取QQ的rss之xml数据
可以用作后台的超级强的变色表格
JAVA得到网卡物理地址(Windows和Linux)
Ads loading...