Kohana3: Verschiedene .htaccess RewriteBase und kohana base_url für Entwickler und Produktionsumgebung
Frage
In meinem bootstrap.php
Ich habe folgende:
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;
}
In .htaccess
have diese:
# Installation directory
RewriteBase /kohana/
Das bedeutet, dass, wenn ich nur meine kohana Anwendung laden, wird es brechen, weil die RewriteBase in der .htaccess
Datei falsch sein wird. Gibt es eine Weise, die ich eine bedingte in der .htaccess
Datei, ähnlich dem habe, kann ich in der Bootstrap haben, so dass es die richtige RewriteBase verwenden?
Lösung
Ich glaube nicht, gibt es eine Möglichkeit, einen bedingten RewriteBase
zu haben. Der einzige Weg, in Apache, die den Sinn kommt, ist die RewriteBase
Richtlinie in eine <Location>
Tag setzen, aber das ist nur in httpd.conf selbst, nicht in .htaccess-Dateien.
Was ich in der Regel in solchen Fällen zu tun ist eine andere definieren Access in der lokalen Umgebung, zum Beispiel htaccess.txt
. Diese Datei wird die lokale Rewrite-Regeln enthalten, während .htaccess
die Server-Seite Einsen enthält.
Andere Tipps
ich auf diese ausführten, während für eine ähnliche Lösung. Während ich nicht RewriteBase bedingt gesetzt habe, habe ich einen ähnlichen Effekt durch eine Umgebungsvariable und dass in den folgenden Regeln. Hier ist ein Beispiel dafür, was ich meine.
# 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]
Wenn Sie Ihre .htaccess-Datei in der Installationsbasis (dh neben index.php), dann müssen Sie nicht besonders brauchen RewriteBase, ich es verlassen meiner Anwendungen und sie arbeiten sehr schön. Selbst mit zwei Installationen Kohana, ein in dem anderen Verzeichnis.