欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Apache mod_rewrite中的REQUEST_URI使用實例

 更新時間:2015年01月27日 10:03:52   投稿:junjie  
這篇文章主要介紹了Apache mod_rewrite中的REQUEST_URI使用實例,本文使用一個實例講解如何使用REQUEST_URI,需要的朋友可以參考下

如下規(guī)則:

復制代碼 代碼如下:

RewriteEngine on
# sitemap index xml rewrite
RewriteRule ^sitemap_([a-zA-Z0-9_\-]+)\.xml$ /sitemap/$1
# redirected all invalid request the the index bootstrap
RewriteRule !\.(htm|txt|xml|css|js|swf|gif|jpg|png|ico)$ index.php [L]

假設訪問 sitemap_index.xml ,當經(jīng)過兩次RewriteRule之后,傳給bootstrap程序 index.php 的 $_SERVER['REQUEST_URI'] 值仍然是 /sitemap_index.xml ,但實際上希望是 /sitemap/index ,這樣 index.php 才能正確的進行 url route 。

要達到這個目的,有兩個方法。

第一種方式,配合 mod_proxy ,將第一條重寫規(guī)則改為

復制代碼 代碼如下:

# sitemap index xml rewrite
RewriteRule ^sitemap_([a-zA-Z0-9_\-]+)\.xml$ /sitemap/$1 [P,L]

這樣將在內(nèi)部產(chǎn)生一個新的URL請求, REQUEST_URI 的值也就變成了新的 /sitemap/index 。但這種方法制造了額外的一次 http 請求。

第二種方法,將第一條規(guī)則改為

復制代碼 代碼如下:

# sitemap index xml rewrite
RewriteRule ^sitemap_([a-zA-Z0-9_\-]+)\.xml$ /sitemap/$1 [E=REQUEST_URI:/sitemap/$1]

或者
復制代碼 代碼如下:

# sitemap index xml rewrite
RewriteRule ^sitemap_([a-zA-Z0-9_\-]+)\.xml$ index.php [E=REQUEST_URI:/sitemap/$1,L]

然后通過 $_SERVER['REDIRECT_REQUEST_URI'] 變量得到 值 /sitemap/index (注意使用 E 設置環(huán)境變量的時候,mod_rewrite 自動給變量加上 REDIRECT_ 前綴)。

有趣的是在 Rewrite 的過程中 REQUEST_URI 的值始終保持是原始的請求URI,但在 mod_setenvif 中提供的 SetEnvIf / SetEnvIfNoCase 中所使用的 Request_URI 屬性得到的卻是經(jīng)過 rewrite 之后的地址而非原始 GET/POST 中的 URI。

所以如果在 httpd.conf / httpd-vhosts.conf 中想使用

復制代碼 代碼如下:

SetEnvIfNoCase Request_URI "sitemap" ...

來針對 sitemap 設置環(huán)境變量的話是不起作用的,因為這時候傳給 SetEnvIfNoCase 進行判斷的 Request_URI 是 index.php 而不是 sitemap_index.xml 或 sitemap/index 。想要得到原始的 Request_URI 信息就必須在 rewrite 規(guī)則的最開始進行保存,比如在 rewrite 規(guī)則開頭加入
復制代碼 代碼如下:

SetEnvIfNoCase Request_URI "(^/sitemap_.*\.xml)" MY_REQUEST_URI_BF_REWRITE=$1

然后在需要的地方使用
復制代碼 代碼如下:

SetEnvIfNoCase MY_REQUEST_URI_BF_REWRITE "sitemap" ...

相關文章

  • Linux下查詢外網(wǎng)IP的幾種方法總結(jié)

    Linux下查詢外網(wǎng)IP的幾種方法總結(jié)

    這篇文章主要介紹了Linux下查詢外網(wǎng)IP的幾種方法總結(jié)的相關資料,需要的朋友可以參考下
    2017-03-03
  • Ubuntu 16.04源碼編譯安裝Apache 2.4.25教程

    Ubuntu 16.04源碼編譯安裝Apache 2.4.25教程

    這篇文章主要為大家詳細介紹了Ubuntu 16.04源碼編譯安裝Apache 2.4.25,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • Linux操作系統(tǒng)的概述與簡介

    Linux操作系統(tǒng)的概述與簡介

    這篇文章概括描述了什么是操作系統(tǒng),Linux的起源,Linux基本特性和Linux的應用,希望通過這篇文章可以讓你對Linux操作系統(tǒng)有一個更好的了解
    2021-06-06
  • 實例分析對于歷史Linux鏡像的問題進行修復處理

    實例分析對于歷史Linux鏡像的問題進行修復處理

    在本篇內(nèi)容中我們給大家總結(jié)了關于對于歷史Linux鏡像的問題進行修復處理知識點,有需要的朋友們跟著學習下。
    2019-02-02
  • 移植busybox構(gòu)建最小根文件系統(tǒng)的步驟詳解

    移植busybox構(gòu)建最小根文件系統(tǒng)的步驟詳解

    這篇文章主要介紹了移植busybox構(gòu)建最小根文件系統(tǒng)的步驟,本文分為五部給大家介紹的非常詳細,需要的朋友可以參考下
    2019-07-07
  • 淺談Linux信號機制

    淺談Linux信號機制

    信號是進程間通信機制中唯一的異步通信機制,一個進程不必通過任何操作來等待信號的到達,事實上,進程也不知道信號到底什么時候到達。進程之間可以互相通過系統(tǒng)調(diào)用kill發(fā)送軟中斷信號。內(nèi)核也可以因為內(nèi)部事件而給進程發(fā)送信號,通知進程發(fā)生了某個事件
    2021-06-06
  • Linux服務器利用防火墻iptables策略進行端口跳轉(zhuǎn)的方法

    Linux服務器利用防火墻iptables策略進行端口跳轉(zhuǎn)的方法

    這篇文章主要介紹了Linux服務器利用防火墻iptables策略進行端口跳轉(zhuǎn)的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-10-10
  • Windows 和 Linux 上Redis的安裝守護進程配置方法

    Windows 和 Linux 上Redis的安裝守護進程配置方法

    ​ Redis是目前最常用的非關系型數(shù)據(jù)庫(NOSql)之一,常以Key-Value的形式存儲。這篇文章主要介紹了Windows 和 Linux 上Redis的安裝守護進程配置 ,需要的朋友可以參考下
    2019-06-06
  • 詳解linux下的.net/mvc/cms程序結(jié)構(gòu)

    詳解linux下的.net/mvc/cms程序結(jié)構(gòu)

    本片文章給大家詳細分析了在linux下.net/mvc/cms程序詳細結(jié)構(gòu)說明,了解這個對在linux下程序開發(fā)非常有用,有興趣的參考學習下吧。
    2017-12-12
  • Linux下的多線程編程(三)

    Linux下的多線程編程(三)

    學東西,往往實例才是最讓人感興趣的,老是學基礎理論,不動手,感覺沒有成就感,呵呵。
    2014-08-08

最新評論