`

subversion+apache的中文路径问题解决过程

阅读更多

问题:

  用subversion+apache搭建好svn服务器后,发现svn库不支持中文路径。

 

解决过程:

  • 定位问题

        创建中文路径时,subversion报错内容是:http://**********/03%20%E6%B5%8B%E8%AF%95/ path not found,大概的意思是,subversion在服务器中找不到需要创建的目录的路径。

        由于路径是存在的,因此通过分析发现,应该是编码的问题,导致路径找不到。从报错信息上看“03%20%E6%B5%8B%E8%AF%95”是属于中文的UTF-8编码。

        如果浏览器发送的是UTF-8编码导致路径找不到,那服务器用的编码肯定就不是UTF-8了,确认一下:

        1、把服务器的环境变量修改为GBK: export LANG=zh_CN.GBK

        2、touch 中文测试.txt

        3、ls 输出能看到“中文测试.txt”,证明服务器保持的目录路径是GBK编码的

 

         那问题就找到了:客户端发送的URL编码是UTF-8,但是服务器保存的是GBK,因此,就没办法对应上了。

 

 

  • 解决问题

       定位了问题就好办了(只是我以为,结果折腾了我一天),要不要求客户端发送GBK编码的路径,要不就把UTF-8编码的URL转码为GBK。第一个方法不现实,因为客户是上帝嘛,那就

       向第二个方法努力吧!

 

       问了谷哥,apache本身就是用UTF-8编码去decode路径的,没有配置可以修改,但是可以使用一个模块去做URL的转码,这个模块就是 mod_encoding,好,那就去安装吧!

 

       安装大概的过程是这样的:

1.download & patch:
# wget http://webdav.todo.gr.jp/download/mod_encoding-20021209.tar.gz
# wget http://webdav.todo.gr.jp/download/experimental/mod_encoding.c.apache2.20040616
新版本mod_encoding.c 覆盖
# cp mod_encoding.c.apache2.20040616 mod_encoding-20021209/mod_encoding.c

这里必须要打一个apache 2.2的补丁。否则make也会出apxs rc=65536 之类的错误。
# wget http://www.aconus.com/~oyaji/faq/mod_encoding.c-apache2.2-20060520.patch
# cd mod_encoding-20021209 
# patch -p0 < mod_encoding.c-apache2.2-20060520.patch


2.install iconv-hook
# cd mod_encoding-20021209/lib
# ./configure --prefix=/usr
# make
# make install
# ldconfig

3 build mod_encoding

./configure --with-apxs=/opt/apache2.2/bin/apxs --with-iconv-hook=/usr/include
make
gcc -shared -o mod_encoding.so mod_encoding.o -Wc,-Wall -Llib -liconv_hook

cp mod_encoding.so /opt/apache2.2/modules

4. config apache 2.2 

LoadModule headers_module modules/mod_headers.so
LoadModule encoding_module modules/mod_encoding.so
<IfModule mod_headers.c>
Header add MS-Author-Via "DAV"
</IfModule>
<IfModule mod_encoding.c>
EncodingEngine on
NormalizeUsername on
SetServerEncoding GBK
DefaultClientEncoding UTF-8 GBK GB2312
AddClientEncoding "(Microsoft .* DAV $)" UTF-8 GBK GB2312
AddClientEncoding "Microsoft .* DAV" UTF-8 GBK GB2312
AddClientEncoding "Microsoft-WebDAV*" UTF-8 GBK GB2312
</IfModule>

 

         上面的安装过程是网上抄袭的,我按照这个去安装碰到了几个问题:

1、# cd mod_encoding-20021209/lib

         安装这个iconv_hook的时候出错,看了他的安装过程,是需要联网的,我使用的服务器不能联网,杯具!

         那只好上网找了一个iconv_hook的rpm包,直接rpm -ivh安装了

 

2、最后模块的配置如下

LoadFile /usr/local/apache2/modules/libiconv_hook.so.1
LoadModule encoding_module modules/mod_encoding.so
<IfModule mod_headers.c>
Header add MS-Author-Via "DAV"
</IfModule>
<IfModule mod_encoding.c>
    EncodingEngine on
    NormalizeUsername on
    SetServerEncoding UTF-8
DefaultClientEncoding UTF-8 GBK GB2312
AddClientEncoding "(Microsoft .* DAV $)" UTF-8 GBK GB2312
AddClientEncoding "Microsoft .* DAV" UTF-8 GBK GB2312
AddClientEncoding "Microsoft-WebDAV*" UTF-8 GBK GB2312
</IfModule>

 

1
1
分享到:
评论

相关推荐

    linux下subversion+apache server搭建

    Linux环境下搭建Subversion(简称svn)服务器,主要涉及到两个方面:一是Subversion自身服务的搭建,二是与Apache服务器的集成。Subversion是一个开源的版本控制系统,用于跟踪文件和目录的变更,便于团队协作开发。...

    持续集成-Subversion+Apache+Jsvnadmin+jenkins

    这通常涉及到配置Apache的httpd.conf文件,添加SVN模块,如mod_dav_svn,并设置必要的路径和权限。 接下来,Jsvnadmin是一个基于Web的Subversion管理工具,它提供了图形化的界面,使得管理Subversion仓库更加方便。...

    Apache+ subversion+tortoiseSVN安装手册

    2. **安装 Subversion**: 获取适用于您操作系统的 Subversion 安装包,安装过程中注意配置选项,确保与 Apache 版本兼容。 3. **配置 Apache**: 打开 Apache 的配置文件(通常为 httpd.conf),添加 SVN 相关模块。...

    Subversion 1.6.6+ Apache 2.2.14+ TortoiseSVN 1.6.6 安装配置总结版

    在安装过程中,同样按照默认设置进行,但记得在配置路径时,确保Apache可以找到Subversion的DAV模块。安装完成后,找到并编辑Apache的配置文件`httpd.conf`,这是整个配置过程的核心部分。 在`httpd.conf`中,我们...

    Linux下搭建svn+apache

    本文将详细介绍在Linux环境下搭建SVN + Apache的具体步骤以及过程中可能遇到的问题及解决方法。 #### 二、核心知识点 1. **Apache与SVN的基本概念** - **Apache**: 是一个广泛使用的开源Web服务器软件,能够处理...

    Subversion+Trac+Installation+Manual

    2. 问题追踪:在Trac中创建、跟踪、解决任务和缺陷,利用时间线查看项目进度。 3. 版本控制与项目管理的结合:Trac会自动检测Subversion的变更,更新时间线和问题的状态,确保信息同步。 以上就是Subversion与Trac...

    再次奉献SVN+apache Server配置

    【描述】虽然描述为空,但我们可以推测博主可能分享了他在配置SVN与Apache服务器过程中的经验和心得,可能包括了一些常见问题的解决方案和最佳实践。 【标签】:“源码”和“工具”这两个标签表明了主题涉及的是与...

    Subversion 基于 Apache 使用时用户权限的管理.docx

    将Subversion与Apache结合使用,可以实现Web访问代码仓库并进行权限控制。以下是关于Subversion基于Apache使用时用户权限管理的详细知识: 1. **Subversion的使用方式** Subversion提供了两种主要的访问方式: - ...

    svn+apache 配置版本管理详细步骤以及安装包

    在IT行业中,版本控制是团队协作开发不可或缺的一部分,而Subversion(简称SVN)与...在配置过程中遇到问题,可以查阅Apache和Subversion的官方文档,或搜索相关教程以获取帮助。希望这份指南能对你的工作带来便利。

    Trac+SVN+Apache安装笔记

    在本文中,我们将详细探讨如何在Windows环境下安装和配置Trac、Subversion(SVN)以及Apache服务器,这对于初学者来说是一份宝贵的指南。首先,确保你已经准备好所有必要的软件包,包括Apache、SVN、TortoiseSVN、...

    SVN+TortoiseSVN+Slik-Subversion+site-1.0.6

    SVN,全称为Subversion,是一种广泛使用的版本控制系统,用于管理软件项目的源代码和其他文件的变更历史。...同时,掌握如何解决常见的SVN问题,如冲突处理、丢失更改恢复等,也是必不可少的技能。

    svn+apache(httpd) svn离线安装包,需要的自取

    SVN,全称为Subversion,是一款广泛使用的版本控制系统,它能够跟踪文件和目录的变更,以便在多人协作的开发环境中管理代码库。...同时,安装过程中遇到的任何问题,都可以参考官方文档或社区论坛寻求解决方案。

    Trac+SSPI+SVN+Apache

    2. 配置Apache的httpd.conf:为SVN设置URL路径、DAV模块、列表父路径、父路径、权限文件、认证名称、认证类型以及SSPI相关参数,以实现SSPI域认证。 3. 权限配置:创建access.conf文件,定义用户和组的访问权限。...

    SVN+apache

    - 将SVN服务器的`Subversion\bin`目录下的`mod_dav_svn.so`、`mod_authz_svn.so`以及所有.dll文件复制到Apache服务器的`ApacheSoftware Foundation\Apache2.2\modules`目录下。 - 修改Apache服务器安装目录下的`...

    xp+apache2.2+subversion1.6.17搭建版本控制服务器

    本教程将详细讲解如何在Windows XP操作系统上,利用Apache2.2和Subversion 1.6.17搭建一个版本控制服务器。 首先,我们需要安装Subversion。文件"Setup-Subversion-1.7.5.msi"是一个Subversion的安装程序。运行这个...

    svn+apache+ssl整合

    【svn+apache+ssl整合】是指将Subversion(SVN)版本控制系统与Apache HTTP服务器结合,并启用SSL(Secure Sockets Layer)加密通信,以便提供安全的HTTPS访问方式。这一过程通常涉及以下步骤: 1. **环境准备**: ...

    Apache-Subversion-1.14.0.zip

    Apache Subversion(简称SVN)是一个开源的版本控制系统,用于管理软件项目的源代码和其他文件的变更。这个"Apache-Subversion-1.14.0.zip"压缩包包含的是Subversion 1.14.0版本的命令行工具,适用于Windows操作系统...

Global site tag (gtag.js) - Google Analytics