我有一个[在DreamHost上托管]的网站,使用WordPress作为主要内容,但使用http://mysite/svn中的Subversion存储库。
我的文件布局是:
webroot/
blog # wordrpress files
.htaccess
我的SVN存储库位于Web根目录之外,但它们已正确映射到/ svn / repository URL。
当我在我的.htaccess文件中放置WordPress永久链接重写规则时,博客页面和固定链接工作得很好,但它打破了Subversion。
这是我的.htaccess文件,删除了所有内容:
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_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . blog/index.php [L]
最后一行打破了Subversion。客户端错误是这样的:
$ svn ls https://mysite/svn/myrepo/
svn: PROPFIND request failed on '/svn'
svn: PROPFIND of '/svn': 405 Method Not Allowed (https://mysite)
如果我注释掉最后一行,RewriteRule . blog/index.php
,Subversion会起作用。但让WordPress处理好的固定链接的东西不会。
我尝试了三个“忽略以'svn'开头的任何网址”我上面已经注释过的方法,没有一个工作 - 他们似乎没有做任何事情。有或没有PT传递标志。
我用google搜索了一下,似乎其他人已经被mod_rewrite和WebDAV(Subversion使用)踩到了彼此。我找到了an extremely similar abandoned SO question here too,但没有找到合适的解决方案。有线索吗?
答案 0 :(得分:4)
怎么样
RewriteCond %{REQUEST_URI} !^/svn.*
答案 1 :(得分:4)
我认为你应该致电Dreamhost的支持。我有一些网站,并且总是得到很好的支持。
无论如何,this solution怎么办?
SVN存储库(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
答案 2 :(得分:2)
您是否考虑过将Subversion存储库移动到其他子域?例如,http://svn.mysite.com/
这将是一个简单的出路。
我花了很多时间把头发拉过mod_rewrite ......任何时候你可以避免这种情况,这是一场胜利。
答案 3 :(得分:0)
尝试#3看起来不错,你试过那里:
RewriteCond %{REQUEST_URI} !^svn.*
答案 4 :(得分:0)
尝试
RewriteCond %{REQUEST_FILENAME} !(.*)svn(.*)