Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

I'm trying to add a conditional statement using Apache's If directive in my .htaccess file.

I have referenced this page http://httpd.apache.org/docs/trunk/mod/core.html#if but it doesn't elaborate much / give many examples. Two incomplete examples it gives are:

<If %{REQUEST_METHOD} IN GET,HEAD,OPTIONS> 

and

<If "$req{Host} = ''"> 

So I've tried to add this to my .htaccess file:

<If %{SERVER_PORT} IN GET,HEAD,OPTIONS>
   #nothing here yet
</If>

But I keep getting Error 500 when I try and load the page. This is on my local install, and it was working fine previously (or if I remove that code). I believe I have AllowOverride All set up globally, and the context for the If directive should let it be present in .htaccess ("Context: server config, virtual host, directory, .htaccess").

Can someone give me some examples of how to properly use the <If> directive, or some guidance as to why it is not working for me?

Thanks!

share|improve this question
1  
If you're getting a 500 error, that means that Apache has logged something to your error log. What does it say? Also, your test for SERVER_PORT in GET,HEAD,OPTIONS doesn't make any sense (SERVER_PORT is going to be the number port number on which the request was received). –  larsks Feb 22 '11 at 20:14
    
Thanks, larsks. Looks like I am running apache 2.0 which does not support the <If> directive. Maybe I need to look into upgrading to 2.3. At least this explains why there are no examples anywhere (b/c the feature is so new). Thanks for the advice. –  cwd Feb 22 '11 at 20:37

1 Answer 1

up vote 6 down vote accepted

The <If> directive is only available in Apache 2.4+ and not 2.2 or earlier.

http://httpd.apache.org/docs/2.4/mod/core.html#if

Documentation not present in 2.2:

http://httpd.apache.org/docs/2.2/mod/core.html#if

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.