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 файл, подобный тому, который я имею в начальной загрузке так, чтобы это использовало корректный RewriteBase?

11
задан Svish 23 March 2010 в 16:07
поделиться

3 ответа

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

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

9
ответ дан 3 December 2019 в 07:36
поделиться

Я наткнулся на это, когда искал похожее решение. Хотя мне не удалось установить 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]
5
ответ дан 3 December 2019 в 07:36
поделиться

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

2
ответ дан 3 December 2019 в 07:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: