Kohana3: разные .htaccess rewritebase и kohana base_url для dev и производственной среды

В моем bootstrap.php меня есть следующее:

 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 есть следующее:

 # Installation directory RewriteBase /kohana/ 

Это означает, что если я просто загружу приложение kohana, оно сломается, потому что RewriteBase в файле .htaccess будет неправильным. Есть ли способ, которым я могу иметь условное .htaccess файле .htaccess подобном тому, который у меня есть в бутстрапе, чтобы он использовал правильную RewriteBase?

Я не думаю, что есть способ иметь условную RewriteBase . Единственный способ в Apache, который приходит на ум, заключается в том, чтобы RewriteBase директиву RewriteBase в <Location> но это доступно только в httpd.conf, а не в файлах .htaccess.

То, что я обычно делаю в таких случаях, – это определить другое имя AccessFileName в локальной среде, например htaccess.txt . Этот файл будет содержать локальные правила перезаписи, а .htaccess содержит серверные.

Я столкнулся с этим, ища аналогичное решение. Хотя я не получил RewriteBase для установки условно, я получил аналогичный эффект, установив переменную окружения и используя это в следующих правилах. Вот пример того, что я имею в виду.

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

Если ваш файл htaccess находится в базе установки (т. Е. Рядом с index.php), то вам особенно не нужно RewriteBase, я оставляю его вне своих приложений, и они работают красиво. Даже с двумя установками Kohana, один внутри другого каталога.