Как я могу убедить mod_rewrite держаться подальше от моих хранилищ Subversion? - PullRequest
2 голосов
/ 21 января 2010

У меня есть сайт [на DreamHost], использующий WordPress для основного контента, но хранилища Subversion в http://mysite/svn.

Мой формат файла:

webroot/
  blog   # wordrpress files
  .htaccess

Мои репозитории SVN находятся вне корневого веб-каталога, но они правильно сопоставлены с URL-адресами / svn / repository.

Когда я помещаю правила перезаписи постоянных ссылок WordPress в мой файл .htaccess, страницы блогов и постоянные ссылки работают отлично, но это нарушает 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, чтобы справляться с приятными постоянными ссылками, не получается.

Я попробовал три подхода "игнорировать любой URL, начинающийся с 'svn'", который я прокомментировал выше, и ни один из них не работает - похоже, они НИЧЕГО не делают. С или без флага прохождения PT.

Я немного погуглил, и, похоже, другие были озадачены тем, что mod_rewrite и WebDAV (который использует Subversion) наступают друг на друга. Я нашел чрезвычайно похожий заброшенный вопрос SO, здесь тоже , но не было рабочих решений. Любые подсказки?

Ответы [ 5 ]

4 голосов
/ 31 января 2010

Я думаю, вам следует обратиться в службу поддержки Dreamhost. У меня есть несколько сайтов с ними, и у меня всегда была хорошая поддержка.

В любом случае, как насчет этого решения ?

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
4 голосов
/ 30 января 2010

Как насчет

RewriteCond %{REQUEST_URI} !^/svn.*

?

2 голосов
/ 21 января 2010

Рассматривали ли вы перемещение ваших хранилищ Subversion в другой поддомен? Например, http://svn.mysite.com/

Это был бы легкий выход.

Я потратил много часов на то, чтобы вырвать свои волосы из-за mod_rewrite ... каждый раз, когда вы можете избежать этого, это победа.

0 голосов
/ 30 января 2010

Попробуйте

RewriteCond %{REQUEST_FILENAME} !(.*)svn(.*)
0 голосов
/ 21 января 2010

Попробуйте # 3 выглядит хорошо, вы пробовали там:

RewriteCond %{REQUEST_URI} !^svn.*
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...