Apache重写规则整理

来源:互联网 发布:vendor.js做什么用的 编辑:程序博客网 时间:2024/06/14 11:33

关于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
原创粉丝点击