綠色資源網(wǎng):您身邊最放心的安全下載站! 最新軟件|熱門排行|軟件分類|軟件專題|廠商大全

綠色資源網(wǎng)

技術(shù)教程
您的位置:首頁服務(wù)器類Web服務(wù)器 → LNMP下Nginx中文文件名或目錄404無法訪問的解決方法

LNMP下Nginx中文文件名或目錄404無法訪問的解決方法

我要評論 2013/08/29 16:19:34 來源:綠色資源網(wǎng) 編輯:m.sonlywya.cn [ ] 評論:0 點擊:458次

VPS論壇里已經(jīng)說過設(shè)置方法,不過貌似很多人還是會遇到中文亂碼的問題,Apache可以使用mod_encoding支持中文目錄和文件,LNMP下Nginx其實不需要安裝額外的組件即可支持中文文件名或中文目錄,下面說一下常見的CentOS、Debian、Ubuntu Linux發(fā)行版下的設(shè)置方法和可能會遇到的問題:

設(shè)置前可以執(zhí)行:locale 看一下,如果顯示是en_US.UTF-8,即是正常,不用按下面的步驟設(shè)置。如果顯示其他編碼需要按如下步驟設(shè)置。

CentOS:

編輯/etc/sysconfig/i18n 文件,內(nèi)容修改為:(可以使用vi、nano或winscp圖形管理軟件,依個人口味選擇)
LANG="en_US.UTF-8"
SYSFONT="latarcyrheb-sun16"

保存,重啟系統(tǒng)。

Debian:

apt-get install -y locales
dpkg-reconfigure locales

執(zhí)行 dpkg-reconfigure locales后會出現(xiàn)如下對話框:

LNMP下Nginx中文文件名或目錄404無法訪問的解決方法_綠色資源網(wǎng)

用向下的方向鍵找到en_US.UTF-8 UTF-8,按空格選擇,再按回車鍵。

LNMP下Nginx中文文件名或目錄404無法訪問的解決方法_m.sonlywya.cn

再按向下鍵選擇en_US.UTF-8,再按回車鍵確認。
重啟系統(tǒng)。

Ubuntu:

編輯/etc/default/locale 文件,修改內(nèi)容為(沒有的話創(chuàng)建一個):
LANG="en_US.UTF-8"
LANGUAGE="en_US:en"
保存,再執(zhí)行:locale-gen en_US en_US.UTF-8
重啟系統(tǒng)。

執(zhí)行:locale 看一下是否顯示是en_US.UTF-8,如果報錯,請在本文反饋。

按以上步驟設(shè)置好后即可支持中文,可以上傳中文的文件或中文的目錄。

可能會遇到的問題:

如果使用Winscp或Flashfxp之類的工具上傳都要設(shè)置為utf-8才可以,設(shè)置步驟如下:

WinSCP:

  1. 打開WinSCP,在登錄界面中選定要登錄的會話
  2. 點擊旁邊的"編輯"按鈕
  3. 在左側(cè)樹型菜單中找到"環(huán)境"項,并打開它
  4. 在右側(cè)中一項為"文件名UTF-8編碼",選擇"開啟",設(shè)置完成。

FlashFXP:

  1. 打開FlashFXP,點"站點",選擇"站點管理器"
  2. 點擊選擇要登陸的站點,在右側(cè)點擊"選項"選項卡,"字符編碼" 后面的列表框里選擇UTF-8,設(shè)置完成。

如果在PuttyXShell等SSH客戶端下顯示亂碼,也是需要修改字符編碼為UTF-8的。

Putty:

  1. 打開Putty,在登錄會話界面中選定Default Settings
  2. 再點擊左側(cè)樹形菜單中的"Window",再點"Translation",中文版的話對應(yīng)的是"窗口","轉(zhuǎn)換"
  3. 在右側(cè)界面中有一項"Remote character set:",中文版的是"假定接收數(shù)據(jù)的字符集",在下拉列表中選擇"UTF-8",設(shè)置完成。

XShell:

  1. 打開XShell,在會話列表要登錄的會話上右擊,選擇"Properties"
  2. 在點擊"Terminal",在Translation里有個Encoding的下拉列表框,選擇"UTF-8",設(shè)置完成,簡單點的設(shè)置方法,直接點上面工具欄里面的藍綠色的圓球,選擇"UTF-8"。

說了這么多,其實就是一點,編碼一致,編碼不一致就會出現(xiàn)亂碼。

如果是在沒有更改編碼前上傳的文件,設(shè)置好后依然會是亂碼的,建議重新上傳一下文件。如果沒有原來文件的備份可以使用下面命令進行轉(zhuǎn)換:for f in `ls *.html` ; do mv $f `ls $f|iconv -f GBK -t UTF-8`; done 。

其中*.html為要轉(zhuǎn)換的文件類型,也可以更換為*.txt,*.rar 主要是看你是什么文件了,里面的GBK為源文件的編碼類型,如果不知道源文件的編碼類型可以執(zhí)行:file -bi 文件名 。

如果想在Windows下改的話其實也是可以的Editplus就有批量修改文件編碼的功能,其他的軟件可能也有此類功能,可以自行研究一下。

如果是目錄的話,目前好像是沒有辦法進行轉(zhuǎn)換。

還有一個問題,如果是html之類的網(wǎng)頁文件,如果原來是網(wǎng)頁內(nèi)容是gb2312或類似的非utf-8的編碼,先要將網(wǎng)頁里面的charset 改為charset=utf-8,再轉(zhuǎn)換文件編碼,否則網(wǎng)頁還是會亂碼的。

關(guān)鍵詞:LNMP,Nginx

閱讀本文后您有什么感想? 已有 人給出評價!

  • 1 歡迎喜歡
  • 1 白癡
  • 1 拜托
  • 1 哇
  • 1 加油
  • 1 鄙視