Apache重写规则整理

关于apache的重写规则,笔者也是小白一个,下面记录自己的探索过程

首先关于.htaccess这个文件叫做“分布式配置文件”,听起来很高大上,是的,对于我们不理解的东西,我们都会觉得很酷,但是当你走进他的时候,你会发现也就是那么回事,这和追星是一样的,如果让你和一个你喜欢的明星做一月的室友,那么你会发现,这个明星也就那样,甚至都不如隔壁邻居王二狗,扯远了。

以.开头……首先想到的是Linux下以点开头的文件都是隐藏文件,在windows下是没法直接新建一个这样的文件的,需要使用编辑器的另存为。这里不多少,自己探索吧。

文件的内容其实也很简单,分三部分来说,首先是一个标签<IfModule mod_rewrite.c>  </IfModule>这对标签表示,如果apache安装了重写功能的话…当然,如果apache没有安装mod_rewrite那么是没法支持重写的。

然后这对标签内的第一行 RewriteEngine On 顾名思义,就是开启重写。

然后就可以进行重写配置。其实还有很多的命令…大多用不到,需要的时候再去查资料吧。

下面是RewriteCond和紧追的RewriteRule这两个通常配合使用,当然,有时候不用RewriteCond也可以

RewriteCond是一个匹配字符串用的,第一个参数是测试的字符串,第二个参数是匹配规则,通过是一个正则

基本上都是用来匹配$_SERVER里的那一堆参数,什么HTTP_HOST啦,REQUEST_FILENAME啦之类的,其实到这个时候也就是浏览器地址栏里输入的那串url有什么别的东西吗,就是对地址栏里的url进行匹配,如果url符合这条规则,那么就走下面的这条路由,所以,RewriteCond和RewriteRule配合使用,路由就是一个转的过程,原来写的是A,经过这个路由之后,就给转到B去了,有些作用的,同一个服务器…下的不同文件夹,对应不同的域名,怎么访问,就可以使用这个重写,RewriteCond 里可以对HTTP_HOST进行匹配,如果是A域名,那么就在RewriteRule里路由到A文件夹,如果是B域名,那么就路由到B文件夹,很方便吧。

写个例子,都是一个公司的,分成触屏端的和pc版的两个应用,都在app这个目录下有两个文件夹

一个touch/index.php ,对应的是触屏

一个computer/index.php,对应的是pc

公司都是比如sina.com吧,那么就分别是touch.sina.com 和computer.sina.com两个应用

那么此时就可以这样

RewriteCond %{HTTP_HOST} ^touch

RewriteRule ^([a-z])+$ touch/index.php?q=$1 [L]

RewriteCond %{HTTP_HOST} ^computer

RewriteRule ^([a-z]+)$ computer/index.php?q=$1 [L]

这样就行了

具体的RewriteRule第一个参数是怎么样的,这个需要参考正则表达式

至于$1 和[L]

你可以把$1是一个占位符,他就是前面RewriteRule第一个括号中的内容

[L] 表示如果匹配的话,这个就是最后一个重写规则。

还有其他的很多种命令。慢慢的探索吧。今天先到这里,困了,睡觉。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值