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.