Apache中RewriteCond規則引數介紹

2021-09-01 08:22:34 字數 3046 閱讀 2406

發表於2011 年 02 月 21 日  由

夢三秋

codeigniter2.0已經出來有20多天了呢~也就是我一直用的php框架(ci)。一直都在研究jquery,倒是把ci給忘到一邊去了,呵呵~~今天公司事情不是很多,於是開始熟悉一下ci2.0的一些新特性~~剛好也再溫習一遍ci的一些特性。早上看的東西不多,其中有這麼一點知識,ci中預設情況下index.php 檔案將被包含在你的url中的,如果想要從url中刪除這個預設的index.php,那麼就需要用到apache的強大的rewrite功能了。

ci的官方文件中給出的解決辦法是這樣的:

建立.htaccess 檔案放到**的根目錄下,檔案中的內容如下:

1rewritecond $1 !^(index\.php|images|robots\.txt)

2rewriterule ^(.*)$ /index.php/$1 [l]

———————————-小小地分割一下———————————————————

apache中 rewritecond語句對於我來說一直是個難點,多次試圖去把它搞明白,都沒有結構,這次我終於算大概知道它的意思了。

rewritecond就像我們程式中的if語句一樣,表示如果符合某個或某幾個條件則執行rewritecond下面緊鄰的rewriterule語句,這就是rewritecond最原始、基礎的功能,為了方便理解,下面來看看幾個例子。

1rewriteengine on

2rewritecond  %  ^mozilla\/5\.0.*

3rewriterule  index.php            index.m.php

4

5rewritecond  %  ^lynx.*

6rewriterule  index.php            index.l.php

7

8rewriterule  index.php            index.b.php

上 面語句的作用是當你是用ff瀏覽器訪問index.php這個檔案的時候,會自動讓你訪問到index.m.php這個檔案,當你是用一些移動終端訪問的 時候,會讓你對index.php這個檔案的訪問實際訪問的是index.l.php去,如果你是用其它的瀏覽器訪問的時候,會讓你跳到 index.b.php。在說形象一點,上面的語句就等同於程式裡面的下面語句(依php語句為例):

10//跳轉到對index.b.php的訪問

再看例2:

1rewritecond % (www.test.cn)

2rewriterule (.*)$ test.php

上面語句的作用是如果你訪問的上乙個頁面的主機位址是www.test.cn,則無論你當前訪問的是哪個頁面,都會跳轉到對test.php的訪問。

再看例三:

1rewritecond % ^host1.* [or]

2rewritecond % ^host2.* [or]

3rewritecond % ^host3.*

4rewriterule (.*)$ test.php

上面語句的作用是如果你的位址是host1或host2或host3的時候,則就跳到對test.php。從這裡可以看出,rewritecond語句之間預設的是and,如果想要or,則要明確的寫出來。

下面是自己收藏的一些有用的重寫規則:

view source

print?

1rewritecond % !-f   //如果檔案存在,就直接訪問檔案,不進行下面的rewriterule.(不是檔案或檔案不存在就執行重寫)

2

3rewritecond % !-d   //#如果目錄存在就直接訪問目錄不進行rewriterule

4

5rewritecond % !^.*(\.css|\.js|\.gif|\.png|\.jpg|\.jpeg)$ //#如果是這些字尾的檔案,就直接訪問檔案,不進行rewrite

———————————-小小地分割一下———————————————————

本文摘自:

Apache中VirtualHost配置說明

以下為例 站點目錄 documentroot e project code public www 訪問網域名稱 servername www.cankaoxiaoxi.com 給虛擬主機增加多個網域名稱,上面 的別名 serveralias cankaoxiaoxi.com 新增可以執行php的檔案...

linux中apache的安裝

apache是世界使用排名第一的web伺服器軟體。它可以執行在幾乎所有廣泛使用的計算機平台上,由於其跨平台和安全性被廣泛使用,是最流行的web伺服器端軟體。同時apache音譯為阿帕奇。apache和apache依賴庫 我們這裡安裝的是apache 2.4.27,所以需要安裝類庫 1.首先安裝 ap...

在OpenBSD中安裝Apache

這幾天折騰openbsd。之前做過乙個虛擬機器,放在外網上做伺服器,結果宿主環境毀了,這個映象也就丟了。這次重安裝,竟然和重新弄完全一樣,大腦裡一點兒印象沒有。openbsd這個東西,不像centos和ubuntu,可以有非常好用的yum和apt get,它帶了個pkg add,也可以實現通過網路安...