Kohana3:. Farklı htaccess RewriteBase ve dev ve üretim ortamı için Kohana base_url

3 Cevap php

Benim in bootstrap.php ben şu var:

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;
}

.htaccess bu var içinde:

# Installation directory
RewriteBase /kohana/

Bu sadece benim Kohana uygulamasını yüklersen .htaccess dosyasındaki RewriteBase yanlış olacaktır, çünkü onu kırmak anlamına gelir. Ben .htaccess Bu doğru RewriteBase kullanmak böylece ben bootstrap sahip birine benzer dosyasında bir koşullu olabilir bir yolu var mı?

3 Cevap

Ben bir koşullu RewriteBase için bir yol olduğunu sanmıyorum. Akla gelen Apache tek yolu bir <Location> etiketi içine RewriteBase direktifini koyuyor ama o değil, httpd.conf kendisi kullanılabilir. Htaccess dosyaları.

Ne genellikle bu gibi durumlarda yapılacak örneğin, yerel ortamda farklı bir AccessFileName tanımlar htaccess.txt olduğunu. .htaccess sunucu tarafında olanları içerir ise bu dosya, yerel kuralları yeniden içerecektir.

Benzer bir çözüm ararken ben bu karşılaştım. Ben RewriteBase şartlı ayarlamak için alamadım, ben bir ortam değişkeni ve aşağıdaki kurallara o kullanarak benzer bir etki aldın. Burada ne demek istediğimi bir örnek.

# 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]

Lütfen htaccess dosyası (yani sonraki index.php için) montaj tabanının ise, o zaman özellikle RewriteBase ihtiyacım yok, benim uygulamaların dışında bırakmak ve onlar güzel iş. Hatta iki Kohana, diğer dizin içinde birini yükler.