配置步驟:
第一步:找到apache的配置文件httpd.conf(文件在conf目錄下)
第二步:你首先必須得讓服務器支持mod_rewrite,如果你使用的是虛擬主機,請事先詢問你的主機提供商。
打開httpd.conf,找到如下代碼,把#去掉。
- #LoadModule rewrite_module modules/mod_rewrite.so
找到AllowOverride None 改成 AllowOverride All,
注:AllowOverride 的參數設置為ALL,表示整臺服務器上都支持URL規則重寫。Apache 服務器要讀每個網站下目錄下的 .htaccess 文件。如果沒有這個文件,或者這個文檔沒有定義任何關于URL重寫的規則就不會有任何效果。
對于不同的網址,需要在APACHE中增加如下內容:
- RewriteEngine On
- RewriteMap lowercase int:tolower
- RewriteCond ${lowercase:%{SERVER_NAME}} ^[a-z0-9]+.eact.com.cn$
- RewriteRule ^(.+) ${lowercase:%{SERVER_NAME}}$1 [C]
- ##RewriteRule ^u.eact.com.cn/(.*) /ux/index.html [L]
- RewriteRule ^([a-z0-9]+).eact.com.cn/(.*) /$1/$2 [L]
實例301跳轉
例一.下面是在一個虛擬主機里定義的規則。功能是把client請求的主機前綴不是www.companysz.com和70.40.213.183都跳轉到主機前綴為http://www.companysz.com,避免相同內容的網頁有多個指向的域名,如http://Vevb.com。
- NameVirtualHost 70.40.213.183:80
- ServerAdmin [email protected]
- DocumentRoot “/web”
- ServerName Vevb.com
- RewriteEngine on #打開rewirte功能
- RewriteCond %{HTTP_HOST} !^www.companysz.com [NC] #聲明Client請求的主機中前綴不是www.companysz.com,其中 [NC] 的意思是忽略大小寫
- RewriteCond %{HTTP_HOST} !^70.40.213.183 [NC] #聲明Client請求的主機中前綴不是70.40.213.183,其中 [NC] 的意思是忽略大小寫
- RewriteCond %{HTTP_HOST} !^$ #聲明Client請求的主機中前綴不為空
- RewriteRule ^(.*) http://www.companysz.com/ [L] #含義是如果Client請求的主機中的
例二.將輸入 en.Vevb.com 的域名時跳轉到www.companysz.com
- RewriteEngine on
- RewriteCond %{HTTP_HOST} ^en.Vevb.com [NC]
- RewriteRule ^(.*) http://www.companysz.com/ [L]
實現 偽靜態在每個虛擬主機的地方設置Rewrite參數
- <VirtualHost *:80>
- ServerAdmin [email protected]
- DocumentRoot "I:/Job/Java"
- ServerName localhost
- RewriteEngine on
- RewriteRule /([0-9]+).html /test.jsp?id=$1 [PT]
- RewriteRule /([0-9]+)_([0-9]+).html /content.jsp?id=$1&id2=$2 [PT]
- </VirtualHost>
新聞熱點
疑難解答