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] 表示如果匹配的話,這個就是最後一個重寫規則。

還有其他的很多種命令。慢慢的探索吧。今天先到這裏,困了,睡覺。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章