Apache 域名跳轉配置
阿新 • • 發佈:2018-01-27
open none pro gpo inter val handler cli proxy
域名跳轉
就是實現URL的跳轉和隱藏真實地址,基於Perl語言的正則表達式規範。平時幫助我們實現擬靜態,擬目錄,域名跳轉,防止盜鏈等 。 參數格式參數: Apache mod_rewrite 規則重寫 1) R[=code](force redirect) 強制外部重定向 說明:強制在替代字符串加上http://thishost[:thisport]/前綴重定向到外部的URL.如果code不指定,將用缺省的302 HTTP狀態碼。 2) F(force URL to be forbidden)禁用URL,返回403HTTP狀態碼。 3) G(force URL to be gone) 強制URL為GONE,返回410HTTP狀態碼。 4) P(force proxy) 強制使用代理轉發。 5) L(last rule) 表明當前規則是最後一條規則,停止分析以後規則的重寫。 6) N(next round) 重新從第一條規則開始運行重寫過程。 7) C(chained with next rule) 與下一條規則關聯 8) T=MIME-type(force MIME type) 強制MIME類型 9) NS (used only if no internal sub-request) 只用於不是內部子請求 10) NC(no case) 不區分大小寫 11) QSA(query string append) 追加請求字符串 12) NE(no URI escaping of output) 不在輸出轉義特殊字符 說明:RewriteRule /foo/(.*) /bar?arg=P1%3d$1 [R,NE] 將能正確的將/foo/zoo轉換成/bar?arg=P1=zoo 13) PT(pass through to next handler) 傳遞給下一個處理 說明:RewriteRule ^/abc(.*) /def$1 [PT] # 將會交給/def規則處理Alias /def /ghi 14) S=num(skip next rule(s)) 跳過num條規則 15) E=VAR:VAL(set environment variable) 設置環境變量 16) OR 代表或者 註:如果規則匹配則正常處理,8)以後的標誌無效,如果不匹配,那麽下面所有關聯的規則都跳過。
格式: # 調用mod_rewrite.c模塊 <IfModule mod_rewrite.c> # 打開rewirte功能 RewriteEngine on # 聲明Client請求的主機中前綴不是www.client.cn RewriteCond %(HTTP_HOST) ^www.client.com$ # 含義是如果Client請求的主機中的前綴符合上述條件,則直接跳轉。 AuthType Basic ^(.*)$ http://www.server.com/$1 [R=301,L] </IfModule>
實例配置
1、查找是否有rewrite模塊,域名跳轉模塊命令:apache2/bin/apachectl -M | grep rewrit rewrite_module (shared) 如果不存在: # 編輯主配置文件,解註釋 vim httpd.conf LoadModule rewrite_module modules/mod_rewrite.so 註:如果沒有該模塊,則需要通過apxs工具安裝模塊。
2、修改虛擬主機配置文件
vim httpd-vhosts.conf # 1對1域名跳轉 <VirtualHost *:80> DocumentRoot配置文件"/usr/local/html" ServerName www.server.com ServerAlias www.aaa.com <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{HTTP_HOST} ^www.aaa.com$ RewriteRule ^/(.*)$ http://www.server.com/$1 [R=301,L] </IfModule> <Directory /usr/local/html> require all granted </Directory> </VirtualHost> # 1對多域名跳轉 <VirtualHost *:80> DocumentRoot "/usr/local/html" ServerName www.server.com ServerAlias www.aaa.com ServerAlias www.bbb.com <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{HTTP_HOST} ^www.aaa.com$ [OR] RewriteCond %{HTTP_HOST} ^www.bbb.com$ RewriteRule ^/(.*)$ http://www.server.com/$1 [R=301,L] </IfModule> <Directory /usr/local/html> require all granted </Directory> </VirtualHost>
註:跳轉狀態碼 301代表永久重定向 302臨時重定向 註:$1代表地址後跟的網絡文件。 註:訪問一個“/”可以輸入以下格式。 RewriteCond %(HTTP_HOST) 456.com RewriteRule /(.*)$ HTTP://123.com/$1 [R=301,L]
3、重新讀取配置文件
apache2/bin/apachectl graceful
Apache 域名跳轉配置