通過URL Rewrite實現鏈結靜態化

2021-06-15 22:43:46 字數 1859 閱讀 1149

下面介紹2種簡單的apache+php下實現url重寫的方法,第一種適合有伺服器配置許可權的使用者,第二種適合租用空間的使用者,也作為我近期的學習心得的整理。

1、對於有伺服器配置許可權的使用者,推薦使用apache的mod_rewrite模組,這裡假設已經安裝好mod_rewrite模組。開啟apache的配置檔案,找到相應主機的部分,新增以下**:

rewriteengine on

rewriterule ^/abc/([a-z]+)/([0-9]+).html$ /abc.php?action=$1&id=$2 [l]

然後在shell裡執行service httpd reload,讓apache重新載入配置就好了。現在在php頁面裡面我們可以把鏈結寫成abc/a/1.html的形式,apache在解析這個url的時候會rewrite成abc.php?action=a&id=1的形式,並返回正確的頁面。運用正規表示式我們可以實現幾乎任何我們想要的鏈結形式,mod_rewrite模組的功能異常強大,這裡只是乙個及其簡單的應用。

2、對於租用空間的使用者,一般都沒有辦法修改apache的配置,這裡有個變通的方法,原理是這樣的:當要傳遞引數訪問php頁面時,正常情況下是通過自動全域性變數$_get來獲得,比如上面的鏈結,在頁面裡可以通過$_get['action'] 和 $_get['id']來獲得,重寫url後就不行了。現在在每個頁面裡require乙個url_rewrite.php檔案,裡面**如下:

$filename = basename(

下面介紹2種簡單的apache+php下實現url重寫的方法,第一種適合有伺服器配置許可權的使用者,第二種適合租用空間的使用者,也作為我近期的學習心得的整理。

1、對於有伺服器配置許可權的使用者,推薦使用apache的mod_rewrite模組,這裡假設已經安裝好mod_rewrite模組。開啟apache的配置檔案,找到相應主機的部分,新增以下**:rewriteengine on

rewriterule ^/abc/([a-z]+)/([0-9]+).html$ /abc.php?action=$1&id=$2 [l]

然後在shell裡執行service httpd reload,讓apache重新載入配置就好了。現在在php頁面裡面我們可以把鏈結寫成abc/a/1.html的形式,apache在解析這個url的時候會rewrite成abc.php?action=a&id=1的形式,並返回正確的頁面。運用正規表示式我們可以實現幾乎任何我們想要的鏈結形式,mod_rewrite模組的功能異常強大,這裡只是乙個及其簡單的應用。

2、對於租用空間的使用者,一般都沒有辦法修改apache的配置,這裡有個變通的方法,原理是這樣的:當要傳遞引數訪問php頁面時,正常情況下是通過自動全域性變數$_get來獲得,比如上面的鏈結,在頁面裡可以通過$_get['action'] 和 $_get['id']來獲得,重寫url後就不行了。現在在每個頁面裡require乙個url_rewrite.php檔案,裡面**如下:

___fckpd___1
這樣$action和$id也得到了,頁面裡鏈結可以寫成abc.php/a/1的形式來訪問相應頁面。

需要注意的是這種方法效率較第一種低,第一種方法是在web伺服器url解析過程中實現的,而這裡是在php頁面解析過程裡實現的,第2種方法只是變通,不得已而為之,要修改鏈結形式很不方便也不靈活。

server['script_name']);

if (strtolower($filename) == "abc.php")

else

} 這樣$action和$id也得到了,頁面裡鏈結可以寫成abc.php/a/1的形式來訪問相應頁面。

需要注意的是這種方法效率較第一種低,第一種方法是在web伺服器url解析過程中實現的,而這裡是在php頁面解析過程裡實現的,第2種方法只是變通,不得已而為之,要修改鏈結形式很不方便也不靈活。

UrlRewrite實現偽靜態

web.xml中配置 urlrewritefilter org.tuckey.web.filters.urlrewrite.urlrewritefilter loglevel debug html web int下面新增 urlrewrite.xml ule結點中form的規則預設使用的是正規表示式...

URLRewrite實現偽靜態 url重寫

urlrewritefilter org.tuckey.web.filters.urlrewrite.urlrewritefilter 4.修改urlrewrite.xml a z world.jsp?id 1 world world.jsp?tid 1 html test1 1.jsp the o...

URLRewrite實現URL位址偽靜態化

1使用urlrewrite實現url位址偽靜態化1.1urlrewirte的用處 1.滿足搜尋引擎的要求。2.隱藏技術實現,提高 的移植性。3.滿足美感的要求 個人感覺這個用處太牽強 1.2專案部署 3.把urlrewrite.xml複製到專案的webroot web inf 目錄下 4.在web....