Kohana3: Verschiedene .htaccess RewriteBase und kohana base_url für Entwickler und Produktionsumgebung

StackOverflow https://stackoverflow.com/questions/2501536

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 .htaccesshave 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?

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top