代码之家  ›  专栏  ›  技术社区  ›  Morfildur

.htaccess根据主机名设置PHP值

  •  5
  • Morfildur  · 技术社区  · 14 年前

    对于我们的项目,我们需要根据环境(开发/生产)设置几个PHP值,尤其是会话保存路径和一些跟踪和分析设置。

    有没有办法在.htaccess中执行类似操作:

    if (hostname == "dev.example.com") {
      php_value session.save_path /tmp
      [...]
    }
    
    2 回复  |  直到 14 年前
        1
  •  6
  •   Piskvor left the building Rohit Kumar    14 年前

    您可以在Apache的virtualhost配置中定义规则(在.htaccess上面的一个步骤中,您需要请求管理员来编辑它):

    <VirtualHost *:80>                                                              
        ServerName piskvor.example.com
        ServerAlias *.host2.example.com
        php_value session.save_path /home/piskvor/tmp
    </VirtualHost>
    <VirtualHost *:80>                                                              
        ServerName someotherhost.example.org
        php_value session.save_path /tmp
    </VirtualHost>
    

    这使您可以对每个主机进行不同的配置(通过主机名或主机名通配符)。大多数较新的Apache设置都支持这一点。

        2
  •  0
  •   Kieran Allen    14 年前

    <IfDefine SERVER1>
      php_value session.save_path /tmp1
    </IfDefine>
    
    <IfDefine SERVER2>
      php_value session.save_path /tmp2
    </IfDefine>
    

    然后使用附加的开关启动apache:

    -D级 服务器1服务器2

    编辑:

    编辑

    if (!file_exists('.htaccess')) {
    
      copy('.htaccess.default', '.htaccess');
    
      $handle = fopen('.htaccess', 'a');
    
      switch ($_SERVER['HTTP_HOST']) {
    
        case 'dev.site':
            fwrite($handle, 'php_value .....' . "\n");
            fwrite($handle, 'php_value .....' . "\n");
        break;
    
        case 'live.site':
            fwrite($handle, 'php_value .....' . "\n");
            fwrite($handle, 'php_value .....' . "\n");
        break;  
    
      }
    
      fclose($handle);
    
    }