subversion和module_rewrite的小冲突?
授权方式:署名,非商业用途,保持一致,转载时请务必以超链接(http://www.fwolf.com/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.domain.com)
经查,如果我去掉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同名,这样就不会出现上面说到的问题了。
Bookmark and Share This Page
If you like this then please subscribe to the RSS Feed.
Save to Browser Favorites
Ask
backflip
blinklist
BlogBookmark
Bloglines
BlogMarks
Blogsvine
BuddyMarks
BUMPzee!
CiteULike
co.mments
Connotea
del.icio.us
DotNetKicks
Digg
diigo
dropjack.com
dzone
Facebook
Fark
Faves
Feed Me Links
Friendsite
folkd.com
Furl
Google
Hugg
Jeqq
Kaboodle
kirtsy
linkaGoGo
LinksMarker
Ma.gnolia
Mister Wong
Mixx
MySpace
MyWeb
Netvouz
Newsvine
PlugIM
popcurrent
Propeller
Reddit
Rojo
Segnalo
Shoutwire
Simpy
Slashdot
Sphere
Sphinn
Spurl.net
Squidoo
StumbleUpon
Technorati
ThisNext
Webride
Windows Live
Yahoo!
Email This to a Friend