2012年8月16日 星期四

網站伺服器上的中文檔案無法透過瀏覽器下載?又是Big5的問題!

網站伺服器上的中文檔案無法透過瀏覽器下載?又是Big5的問題!

發生原因:
資料庫被用戶上傳了萬惡的中文檔案,於是呢,設定上只認UFT8的各家瀏覽器就哭了....特別是chrome這種URL不能改認BIG5的就慘了,你的用戶永遠只會看見一串亂碼後的網址傳送 Not Found 404的頁面......
不然就是例如只能出現這種建議方案:無法下載中文檔名的附件嗎? 取消IE瀏覽器「工具/網際網路選項/進階/國際*/傳送 UTF-8 URL(就是不能打V哦)」,然後重新啟動瀏覽器即可

But!這樣子不想用IE,甚至不能用IE的廣大手機用戶怎麼辦?

解決方案:
感謝前人種樹,簡單來說就是把apache當中加入一個mod,名稱為:為fileiri_module

設定方式如下:
1.用centos就很開心了,因為只需要
yum -y install httpd-devel      <---加入apache裡mod的編譯器
wget http://dev.w3.org/apache-modules/mod_fileiri/mod_fileiri.c       <---上網去把fileiri.c抓回來~

在你抓檔案的目錄下指令: apxs -i -a -c mod_fileiri.c     <----完成編譯,會自動幫你放進apache喔!

/etc/httpd/conf/httpd.conf 底下會多出這一行
LoadModule fileiri_module /usr/lib/httpd/modules/mod_fileiri.so       <----掛載本module

我們現在只需要在上面這行字的底下多加上:

<IfModule mod_fileiri.c> 
FileIRI On 
FilenameCharset Big5 
</IfModule>

下指令service httpd restart重開apache,一切就搞定了!


參考文獻:
------------------------------------------------------------------------------------------------------
20131226新增ubuntu底下的安裝方法,因為架構略有不同所以指令與centos有一點差別,apache2 mod_fileiri.so 
1.apt-get install apache2-dev

2.
wget http://dev.w3.org/apache-modules/mod_fileiri/mod_fileiri.c 


3.apxs2 -i -a -c mod_fileiri.c

4.在/etc/apache2/apache2.conf檔案末端底下加入以下內容:

<IfModule mod_fileiri.c> 
FileIRI On 
FilenameCharset Big5 
</IfModule>
5.service apache2 restart  ,搞定。

附記:
因為apache2在ubuntu下設定檔稍微比較麻煩,所以如果要載入LoadModule fileiri_module卻在mods-enabled當中找不到,那麼就必須要手動啟用喔!
ubuntu下啟動指定Module,可使用a2enmod這個指令


沒有留言:

張貼留言