2012-12-21 13 views
9

Tôi có dòng sau trong file .htaccess tôi để chọn phiên bản của PHP để sử dụng:htaccess lệnh if

AddType x-httpd-php53 .php 

này hoạt động tuyệt vời trong môi trường sống nhưng không áp dụng cho các môi trường kiểm tra và phá vỡ trang web.

Có cách nào tôi có thể đặt nó trong một tuyên bố if hoặc một cái gì đó bằng IP của máy chủ hoặc URL của trang web hoặc một cái gì đó để nó chỉ có hiệu lực trong môi trường sống?

+0

Sự khác biệt giữa môi trường sống và thử nghiệm của bạn là gì? Làm thế nào chúng được cấu hình trong Apache? Và quan trọng nhất, làm thế nào nó phá vỡ? Có gì trong error_log? –

Trả lời

16

Với Apache 2.4, thật dễ dàng với chỉ thị <If>/<Else> (trên %{HTTP_HOST}?).

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

Đối Apache 2.2 trở về trước, tôi sẽ thêm một tham số vào dòng lệnh khởi động của Apache (-D tùy chọn) trong một trong hai môi trường sau đó kiểm tra nếu nó hiện diện hay không qua <IfDefine>.

Để thực hiện việc này trên Windows, với Apache bắt đầu làm dịch vụ, hãy sửa đổi khóa đăng ký HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Apache2.<VERSION>\ImagePath
bằng cách thêm -DFOO. Sau đó, bạn có thể viết:

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

Một cách khác bạn có thể làm là thay đổi httpd.conf trong môi trường thử nghiệm để sử dụng ".htaccess-test" thay vì ".htaccess".

này chỉ đơn giản được thực hiện bằng cách sửa đổi httpd.conf và thêm dòng sau bên ngoài của bất kỳ khối:

AccessFileName .htaccess-test 

Chú ý: Bạn có thể thêm AccessFileName.htaccess bên trong một <VirtualHost> khối nếu bạn muốn áp dụng nó vào một cụ thể VirtualHost.

Điều này có nghĩa là môi trường thử nghiệm sẽ sử dụng .htaccess-test trong khi môi trường sản xuất sẽ sử dụng .htaccess. Do đó, bạn sẽ được tự do cấu hình từng môi trường riêng biệt.

Sau đó, tạo tệp có tên .htaccess-test bên cạnh .htaccess. Sửa đổi .htaccess-test với cấu hình thử nghiệm của bạn, rồi cuối cùng khởi động lại máy chủ Web Apache trong máy chủ kiểm tra môi trường.

Các vấn đề liên quan