12/7/11
Webdav:
webdav 全名是 Web-based Distributed Authoring and Versioning.
它是 HTTP 協定的其中一種擴充來.
我們可以用它來實現在 Web Server 裡上載, 下載及直接修改檔案.
這功能相當實用, 有了它後, 修改檔案就不再需要經 FTP 了.
在 Apache2.2 上想啟用此功能, 必先要啟用有關模組
啟用模組:
a2enmod dav
a2enmod dav_fs
# a2enmod 是用來啟用 module 的指令
# dav_fs 是依賴 dav 去提供 webdav 的功能
修改主機設定:
在某個想啟用 Webdav 的 VirtualHost 的 configure file 加入以下內容
############ Webdav Configure ############
Alias /webdav /var/www/datahunter.org
<Location /webdav>
DAV On
AuthType Basic
AuthName "webdav"
AuthUserFile /var/www/pw/webdav.pw
Require valid-user
</Location>
################ END ################
建立認證檔:
htpasswd -c /var/www/pw/passwd.dav datahunter
chown datahunter:www-data /var/www/pw/webdav.pw
chmod 640 /var/www/pw/passwd.dav
重開 apache:
/etc/init.d/apache2 force-reload
Linux上的 webdav client
cadaver 是 linux console 上的 webdav clinet
安裝:
apt-get install cadaver
用法:
cadaver http://datahunter.org/webdav/ Authentication required for webdav on server `datahunter.org': Username: datahunter Password: dav:/webdav/>
它的操作方式與 ftp 差不多 ~
支持有以下指令:
ls cd pwd put get mget mput edit less mkcol cat delete rmcol copy move lock unlock discover steal showlocks version checkin checkout uncheckout history label propnames chexec propget propdel propset search set open close echo quit unset lcd lls lpwd logout help describe about Aliases: rm=delete, mkdir=mkcol, mv=move, cp=copy, more=less, quit=exit=bye
Window Xp 上的 webdav client
由於 Xp 上的 webdav 有兩個模式存在
1. Microsoft-WebDAV-MiniRedir/5.1.2600
2. Microsoft Data Access Internet Publishing Provider DAV 1.1
只有 方式2 才已正常地用 apache 的 webdav, 方式1 就永遠卡在 login 畫面 -______-
由於在 Xp_Sp3 上要 map driver 已不能用 "#" 或 ":80" 等手段去強制用 方式2 了
所以要在 apache 上下工功才得
apt-get install libapache2-mod-encoding
# encoding 不是 apache 本身有的 module 來
啟用 encoding 及 headers 等 module:
a2enmod encoding
a2enmod headers
在 config file 加入以下設定:
################# Broken WebDAV for Windows XP ###############
#
BrowserMatch "^WebDAVFS/1.[012]" redirect-carefully
BrowserMatch "Microsoft Data Access Internet Publishing Provider" redirect-carefully
BrowserMatch "Microsoft-WebDAV-MiniRedir/5.1.2600" redirect-carefully
BrowserMatch "^WebDrive" redirect-carefully
BrowserMatch "^WebDAVFS" redirect-carefully
#
<IfModule mod_headers.c>
Header add MS-Author-Via "DAV"
</IfModule>
#
<IfModule mod_encoding.c>
EncodingEngine on
NormalizeUsername on
</IfModule>
#
############################END########################
最後重開 apache:
/etc/init.d/apache2 force-reload
那就可以成功 login 了 ~~
========================================
在中文方面, M$ 的 webdav client 真係唔得
一直都是亂碼, 如果加入以下 config
<IfModule mod_encoding.c>
EncodingEngine on
NormalizeUsername on
SetServerEncoding UTF-8
DefaultClientEncoding UTF-8 big5 gb18030
AddClientEncoding "Microsoft-WebDAV*" UTF-8 big5
AddClientEncoding "cadaver/" UTF-8 big5
</IfModule>
那就可以正常地在 "font-end" 顯示中文,
不過在 putty 及 winscp 就到佢亂碼