Hay un enfoque interesante que uso: el pago (y la actualización) se realiza en un directorio completamente separado (posiblemente en una máquina completamente separada) y luego se copia al código donde el servidor web lo leerá con rsync. Una regla de exclusión en la línea de comando de rsync se utiliza para hacer que no copie los directorios de .svn (y CVS), mientras que --delete-excluded se asegura de que se eliminarán incluso si se copiaron antes.
Dado que tanto svn update como rsync realizan transferencias incrementales, esto es bastante rápido incluso para sitios más grandes. También le permite tener su repositorio detrás de un firewall. La única advertencia es que debe mover todos los directorios con archivos generados en el servidor (como los archivos/directorio en Drupal) a un lugar fuera del directorio de destino de rsync (rsync sobrescribirá todo cuando se usa de esta manera) y el enlace simbólico a él debe crearse en el directorio fuente rsync. El directorio fuente rsync también puede tener otros archivos no versionados (como archivos de configuración específicos de la máquina).
El conjunto completo de parámetros rsync que uso es
rsync -vv --rsh='ssh -l username' -rltzpy --exclude .svn/ --exclude CVS/ --exclude Attic/ --delete-after --delete-excluded --chmod=og-w,Fa-x
Incluso entonces, para la redundancia, todavía tengo una regla de configuración para evitar Svn puedan ser consultados, copiado de una regla por defecto de Debian, que impide .ht * (.htaccess, .htpasswd) de ser accedido.
Entiendo el punto acerca de 403. Personalmente (en este tipo de situación, donde los archivos nunca deberían ser servidos), preferiría que no supieran que los directorios existían. Voy a probar AliasMatch también. Esto fue lo que logré obtener de Google, siempre estoy contento por las mejores soluciones –
tenga en cuenta que esto no funciona en los archivos .htaccess si está tratando de hacer esto en un host compartido/virtual. Utilice la respuesta de Monóxido si no tiene acceso al archivo httpd.conf. http://stackoverflow.com/questions/214886/#214887 – nickf
Es cierto. Existe la posibilidad de que mod_rewrite no esté habilitado para su uso en archivos .htaccess también. (Indicado en si su servidor es algo permisivo con lo que está permitido en ellos) –