woff 發表於 2012-2-26 01:12:56

Apache .htaccess偽靜態實現案例

為什麼要實現偽靜態,我就不多說了。
案例一,多個參數如何替換
億枝客比較導購網產品列表,上下頁地址如下格式:

http://www.yicike.com/category.php?categoryId=1169&&minPrice=0&maxPrice=0&mer=&manu=&so=&t=11621&x=16
非常長,將近8個參數,我們如何處理呢,經過多次嘗試最後,解決如下:

RewriteEngine on
RewriteBase /
RewriteRule ^mp(*)-(*)-(*)-(*)-(*)-(*)-(*)-(*).htm   
category.php?categoryId=$1&&minPrice=$2&maxPrice=$3&mer=$4&manu=$5&so=$6&t=$7&x=$8

具體做法網上有很多教程,我簡單列一下:
1、 啟用rewrite,打開httpd.conf找到下面這一行,並去了前面的#號
LoadModule rewrite_module libexec/mod_rewrite.so

2 、把httpd.conf 網站所在目錄,設定為
Options Indexes FollowSymLinks
AllowOverride all

3、創建.htaccess

4、將代碼寫.htaccess
第一行:RewriteRule ^mp(*)-(*)-(*)-(*)-(*)-(*)-(*)-(*).htm   
第二行:category.php?categoryId=$1&&minPrice=$2&maxPrice=$3&mer=$4&manu=$5&so=$6&t=$7&x=$8
第二行這裡從$1-$8共8個參數,其分別對應第一行從左到右,按 "-"隔開正則表達部分,如$1對應mp右邊的(*),以此類推,就可以將8個參數對應起來。要知道(*)具體意義,要參考學習正則表達式。

案例二,如何在windows裡創建與修改.htaccess
利用FTP遠程連接處理。

案例三,多個規則注意順序,先匹配長的,再匹配短的
.htaccess裡如果有多個轉向,那麼就要注意順序了,順序不同有可能導致問題。比如以下兩個現在順序,就會導致第二個轉向失效,交換一個前後位置就OK了。
#產品比較地址
RewriteRule ^(*)-*/(*)-(*).htm products.php?categoryId=$1&productId=$2
#產品詳細地址
RewriteRule ^(*)-*/(*)-(*)-detail.htm products_detail.php?categoryId=$1&productId=$2

案例四,固定值不需要處理
如將 products_detail.htm?categoryId=1357&productId=1337      替換為 products_detail.php?categoryId=1357&productId=1337
就可以直接寫成
RewriteRule ^products_detail.htm   products_detail.php
案例五,各種轉向代碼實例
301
rewriteCond %{http_host} ^stseo.com
rewriteRule ^(.*)$ http://www.stseo.com/$1
302
域名解析裡設置的URL轉向
頁: [1]
查看完整版本: Apache .htaccess偽靜態實現案例