开发者

How can I convince mod_rewrite to stay away from my Subversion repositories?

I have a site [hosted on DreamHost], using WordPress for the main content, but Subversion repositories in http://mysite/svn .

My file layout is:

webroot/
  blog   # wordrpress files
  .htaccess

My SVN repositories lay outside the web root, but they are correctly mapped to /svn/repository URLs.

When I put the WordPress permalink rewrite rules in my .htaccess file, the blog pages and permalinks work great, but it breaks Subversion.

This is my .htaccess file with everything extraneous removed:

RewriteEngine On
RewriteBase /

# try 1                                                                                       
#RewriteCond %{REQUEST_URI} svn [NC]                                                          
#RewriteRule . - [PT,L]                                                                       

# try 2                                                                                       
#RewriteRule ^svn.*  -  [PT,L]                                                                

# try 3
#RewriteCond %{REQUEST_URI} !^svn 
RewriteCond %{REQUEST_FILE开发者_如何学JAVANAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . blog/index.php [L]

The very last line breaks Subversion. Clients errors are like this:

$ svn ls https://mysite/svn/myrepo/
svn: PROPFIND request failed on '/svn'
svn: PROPFIND of '/svn': 405 Method Not Allowed (https://mysite)

If I comment out that last line, RewriteRule . blog/index.php, Subversion works. But having WordPress handle the the nice permalink stuff doesn't.

I tried the three "ignore any URL starting with 'svn'" approaches I've commented out above, and none work-- they seem to not do ANYTHING. With or without the PT pass-through flag.

I have googled quite a bit and it seems others have been stumped with mod_rewrite and WebDAV (which Subversion uses) stepping on each other. I found an extremely similar abandoned SO question here too, but no working solutions. Any clues?


I think you should call Dreamhost's support. I have some websites with them and always had good support.

Anyways, what about this solution?

SVN repository (SVNRepo)

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{THE_REQUEST} SVNRepo
RewriteRule . - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress


How about

RewriteCond %{REQUEST_URI} !^/svn.*

?


Have you considered moving your Subversion repositories to a different subdomain? For example, http://svn.mysite.com/

This would be an easy way out.

I've spent many hours pulling my hair out over mod_rewrite...any time you can avoid that, it's a win.


Try #3 looks good, have you tried there:

RewriteCond %{REQUEST_URI} !^svn.*


Try

RewriteCond %{REQUEST_FILENAME} !(.*)svn(.*)
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜