分享

Fwolf’s Blog Blog Archive subversion和module_rewrite的小冲突?

 ekylin 2006-08-13
授权方式:署名,非商业用途,保持一致,转载时请务必以超链接(http://www./blog/post/61)的形式标明文章原始出处和作者信息及本声明。

我的Apache上同时挂有SVN和rewrite module,SVN配置都没有问题,通过HTTP访问正常,但通过Toroisesvn客户端访问总是不行,错误信息如下:

Error: PROPFIND request failed on ‘/svn/svntest’
Error: PROPFIND of ‘/svn/svntest’: 302 Found (http://www.)

经查,如果我去掉Apache的httpd.conf中的这两句,就可以正常使用了:

RewriteRule (.+)\/(\w+[^\/])$ $1/$2/ [R]
RewriteRule \/(\w+[^\/])$ /$1/ [R]

这两句RewriteRule是为了添加URL地址末尾的斜杠的,看来这两句对SVN的调用起了影响,原因大概是访问SVN的地址,比如是“/svn/svntest”时,RewriteRule会将其改写为“/svn/svntest/”,多了一个斜杠,然后SVN就不知所综了。

原来Apache 2.0的mod-dir已经有了自动添加斜杠的功能:

A "trailing slash" redirect is issued when the server
receives a request for a URL
http://servername/foo/dirname where
dirname is a directory. Directories require a
trailing slash, so mod_dir issues a redirect to
http://servername/foo/dirname/.

不用劳烦RewriteRule了。

话又说回来,不管是mod_dir也好,RewriteRule也好,使用反向代理(ProxyPass)的时候还是有些问题,比如说,domain1.com/d2地址贝配置为转向到domain2.com,那么访问地址domain1.com/d2/subdir时,如果subdir时确实存在的,而输入地址的时候最后又没有输入斜杠/,那么你将会得到一个404错误页面,并且地址栏显示的是domain1.com/subdir,这个问题遇到很久了,一直不知道如何解决。通过端口进行反向代理好像同样存在这样的问题。

所以,使用反向代理时,一是老老实实的加上斜杠,二就是最好尽量采用如下的反向代理方式:domain1.com/subdir1定向到domain2.com/subdir2,并且subdir1和subdir2同名,这样就不会出现上面说到的问题了。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多