作者 主題: apache 的 mod_rewrite 建構多用戶網址環境問題  (閱讀 2012 次)

0 會員 與 1 訪客 正在閱讀本文。

elct9620

  • 可愛的小學生
  • *
  • 文章數: 12
    • 檢視個人資料
假設下列是主機的設定:
代碼: [選擇]
/var/www #網站伺服器本體
/var/www/view #網站可瀏覽部分
/var/www/userN #網站用戶資料夾
/var/www/domain.conf #apache額外載入的設定檔
/var/www/domain/userN.map #rewrite的map檔案

下列是Apache中 rewrite 的設定項目 (copy apache 文件中的設定方法&加上自己新增的語法-紅字)
代碼: [選擇]

##
##  httpd.conf
##
   
# 在重定向时使用规范化的主机名等等
UseCanonicalName on

   
# 在CLF-format之前添加虚拟主机
CustomLog  /path/to/access_log  "%{VHOST}e %h %l %u %t \"%r\" %>s %b"
   

# 为主服务器启用重写引擎
RewriteEngine on

RewriteMap    lowercase    int:tolower
[color=red]#載入rewrite的設定檔
Include /var/www/domain.conf[/color]

#   Now do the actual virtual host mapping
#   via a huge and complicated single rule:
#
#   1. make sure we don't map for common locations
RewriteCond   %{REQUEST_URI}  !^/commonurl1/.*
RewriteCond   %{REQUEST_URI}  !^/commonurl2/.*
   
RewriteCond   %{REQUEST_URI}  !^/commonurlN/.*
#
#   2. make sure we have a Host header, because
#      currently our approach only supports
#      virtual hosting through this header
RewriteCond   %{HTTP_HOST}  !^$
#
#   3. lowercase the hostname
RewriteCond   ${lowercase:%{HTTP_HOST}|NONE}  ^(.+)$
#
#   4. lookup this hostname in vhost.map and
#      remember it only when it is a path
#      (and not "NONE" from above)
RewriteCond   ${vhost:%1}  ^(/.*)$
#
#   5. finally we can map the URL to its docroot location
#      and remember the virtual host for logging puposes
RewriteRule   ^/(.*)$   %1/$1  [E=VHOST:${lowercase:%{HTTP_HOST}}]


下面是 domain.conf 的內容:
代碼: [選擇]
#   define two maps: one for fixing the URL and one which defines
#   the available virtual hosts with their corresponding
#   DocumentRoot.
RewriteMap    vhost        txt:/var/www/domain/user.map

RewriteMap    vhost        txt:/var/www/domain/userN.map

下列是Map檔案:
代碼: [選擇]
##
##  vhost.map
##
www.domain.com:80  /var/www/userN
bbs.domain.com:80  /var/www/userN/bbs
     略
www.parkdomain.com:80  /var/www/userN

然後使用 php 編輯 domain.conf 新增map檔案
使用php在map檔案內新增規則
請問:
這樣設定之後, www.domain.com & www.parkdomain.com 只要A紀錄或者 NS 正確,就可以正常瀏覽網站嗎?
bbs.domain.com 在這種情況下也可以嗎?

順便問: apache 可以對特定目錄進行流量限制嗎? 或者搭配rewrite的方式進行流量限制(對某資料夾和其子目錄)
(有任何不清楚麻煩告訴我,以免我問不出個所以然 :))
« 上次編輯: 2008-01-31 20:45 由 elct9620 »

fillano

  • 鑽研的研究生
  • *****
  • 文章數: 526
    • 檢視個人資料
有一點小疑問,就是不能用virtualhost做嗎?為甚麼要用rewrite做???
Sapere aude! Habe Mut, dich deines eigenen Verstandes zu bedienen! ist also der Wahlspruch der Aufklärung.

kenduest

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 3675
    • 檢視個人資料
    • http://kenduest.sayya.org
有一點小疑問,就是不能用virtualhost做嗎?為甚麼要用rewrite做???

都可以,大量的情況用重寫 url 方式效益比較高。

--
I am kenduest - 小州

my website: http://kenduest.sayya.org/

elct9620

  • 可愛的小學生
  • *
  • 文章數: 12
    • 檢視個人資料
有一點小疑問,就是不能用virtualhost做嗎?為甚麼要用rewrite做???

我為了這個問題,查了很多資料。
如果用 virtualhost 的話,需要花費很多時間 (每個網址作一次設定) 對於伺服器資源消耗好想也比較多...
(沒人回答我問的問題= = ???)