2012-12-21 61 views
9

我在.htaccess文件中的以下行來選擇要使用的PHP版本:htaccess的if語句

AddType x-httpd-php53 .php 

這種環境中生活的偉大工程,但並不適用於測試環境,並打破了現場。

有沒有一種方法,我可以把它放在if語句或通過一些網站或某事的服務器或網址的IP,使之僅僅生效環境中生活?

+0

你的現場和測試環境有什麼區別?他們在Apache中如何配置?最重要的是,它是如何突破的? error_log中有什麼? –

回答

16

隨着阿帕奇2.4,很容易與<If>/<Else>指令(上%{HTTP_HOST}?)。

<If "%{HTTP_HOST} == 'foo'"> 
    # configuration for foo 
</If> 
<Else> 
    # default configuration 
</Else> 

對於的Apache 2.2和更早,我想將參數添加到在兩種環境中的一個在Apache(-D選項)的啓動命令行然後進行測試,如果它是存在或不存在通過<IfDefine>

要做到這一點在Windows上,使用Apache作爲服務啓動,通過附加-DFOO修改註冊表鍵HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Apache2.<VERSION>\ImagePath
。然後,你可以寫:

<IfDefine FOO> 
    # configuration for foo 
</IfDefine> 
<IfDefine !FOO> 
    # default configuration 
</IfDefine> 
2

你可以做的另一種方法是修改httpd.conf文件在測試環境中使用「的.htaccess測試」而不是「的.htaccess」。

這簡直是通過修改httpd.conf文件,並添加以下行之外的任何模塊來完成:

AccessFileName .htaccess-test 

注意:您可以將<虛擬主機>塊內部添加AccessFileName,如果你想將它應用到一個特定的VirtualHost。

這意味着測試環境將使用的.htaccess測試同時生產環境將使用的.htaccess。因此,您可以自由配置每個環境。

然後創建一個名爲.htaccess-test的文件,該文件與.htaccess相鄰。 用您的測試配置修改.htaccess-test,然後在測試環境服務器中重新啓動Apache Web服務器。