apache mod_rewrite - URL Rewriting

藍色泡泡 30 六月, 2008 17:00 常見問題 靜態連結網址 引用 (0) 預覽列印
apache Module Rewrite - URL Rewriting

自我備忘用..常常忘掉....Embarassed

apache 設定檔
apache預設已有mod_rewire 模組: (httpd.conf 相關設定)
預設也已啟用.
LoadModule rewrite_module libexec/apache/mod_rewrite.so
AddModule mod_rewrite.c

用法: 在希望作用的資料夾下,  新增 .htaccess 檔案

RewriteCond:  表示新的規則開始
參數:
[NC] (不分字母大小寫)
[OR] (或者, 用來與下一規則連結用)

RewriteRule :   重新導向的規則
常用參數: (其他請自行參考apache手冊)
[R]   重新導向
[F]   重新導向到 403 forbidden 頁面
[L]   表示這是最後一條規則

常用到的規則表示式:
 .           任何單一字母
[chars]   chars字母中的其中一個
[^chars] 不包含 chars 的字母
?           0個或是1個字母
*           0個或是N個字母
+          1個或是N個字母
^          表示一行的開始
$           表示一行的結束
\            跳脫字元(顯示符號本身)

常見的用法:
(A) 重新導向到正確的網址:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^ohaha.ks.edu.tw$ [NC]
RewriteRule ^(.*)$ http://ohaha.ks.edu.tw/$1 [R,L]
說明:
若使用者瀏覽頁是www.ohaha.ks.edu.tw/ooo.php 重導向至 http://ohaha.ks.edu.tw/ooo.php

(B) 禁止盜連檔案,並且顯示相關訊息給盜連者.
RewriteEngine on
SetEnvIf referer "^$" local_ref=1
RewriteCond %{HTTP_REFERER} !^http://ohaha.ks.edu.tw/.*$ [NC]
RewriteRule .*\.(jpg|gif|png|iso|rar|zip|tar.gz)$ /nohotlink.png [R,NC]

說明:
若使用者參照頁面不是空的, (第一行)
也不包含 http://ohaha.ks.edu.tw/  (第二行)
且瀏覽 jpg gif ...等圖檔, 則以 /nohotlink.png 圖檔替代顯示這些遭盜連檔案. (第三行)

補充:
此時若有盜連者,可以在http-access log檔案可以發現類似如下紀錄:
使用者的IP位址 - - [30/Jun/2008:16:57:41 +0800] "GET /nohotlink.png HTTP/1.1" 304 - "盜連的頁面來源" "Mozilla/4.0 (compatible; MSIE 7.0; W indows NT 5.1)"

迴響


發表迴響

發表迴響
 authimage

©2008 - Post by 藍色泡泡 (some rights reserved)