php .htaccess kohana kohana-3

php - Kohana3: Diferente.htaccess rewritebase y kohana base_url para desarrollo y entorno de producción



kohana-3 (3)

Me encontré con esto mientras buscaba una solución similar. Si bien no obtuve RewriteBase para establecer condicionalmente, obtuve un efecto similar al establecer una variable de entorno y usarla en las siguientes reglas. Aquí hay un ejemplo de lo que quiero decir.

# Set an environment variable based on the server name RewriteRule %{SERVER_NAME} localhost [E=REWRITEBASE:/local_dir/] RewriteRule %{SERVER_NAME} prodhost [E=REWRITEBASE:/prod_dir/] # Allow any files or directories that exist to be displayed directly RewriteCond %{ENV:REWRITEBASE}%{REQUEST_FILENAME} !-f RewriteCond %{ENV:REWRITEBASE}%{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} !^static # Rewrite all other URLs to index.php/URL RewriteRule .* %{ENV:REWRITEBASE}index.php/$0 [PT]

En mi bootstrap.php tengo lo siguiente:

if($_SERVER[''SERVER_NAME''] == ''localhost'') Kohana::$environment = ''development''; else Kohana::$environment = ''production''; ... switch(Kohana::$environment) { case ''development'': $settings = array(''base_url'' => ''/kohana/'', ''index_file'' => FALSE); break; default: $settings = array(''base_url'' => ''/'', ''index_file'' => FALSE); break; }

En .htaccess tiene esto:

# Installation directory RewriteBase /kohana/

Esto significa que si solo cargué mi aplicación Kohana, se romperá porque RewriteBase en el archivo .htaccess será incorrecta. ¿Hay alguna manera de que pueda tener un condicional en el archivo .htaccess similar al que tengo en el programa de arranque para que use la RewriteBase correcta?


No creo que haya una manera de tener una RewriteBase condicional. La única forma en que Apache viene a la mente es colocar la directiva RewriteBase en una etiqueta <Location> pero solo está disponible en httpd.conf, no en archivos .htaccess.

Lo que suelo hacer en esos casos es definir un AccessFileName diferente en el entorno local, por ejemplo htaccess.txt . Ese archivo contendrá las reglas de reescritura locales, mientras que .htaccess contiene las del lado del servidor.


Si su archivo htaccess está en la base de instalación (es decir, al lado de index.php), entonces no necesita en particular RewriteBase, lo dejo fuera de mis aplicaciones y funcionan muy bien. Incluso con dos instalaciones Kohana, una dentro del otro directorio.