Friday, November 12, 2021

[SOLVED] How do I use a custom variable in an If-Else statement inside an Apache config?

Issue

Here's my code (I've commented out the if-else part as it's not working)

snippets/contents of my config files

/etc/httpd/conf.d/staff.vhost

Define host_domain "staff"

Include /etc/httpd/conf.d/stage_template.vhost

/etc/httpd/conf.d/stage_template.vhost

    #<If "${host_domain} == 'main'">
    #    ServerAlias stage.myhost.com
    #</If>
    #<Else>
        ServerAlias stage-${host_domain}.myhost.com
    #</Else>

${host_domain} can have 3 possible values: main or staff or customer

I have tried:

  • ${host_domain}: I get this error

    AH00526: Syntax error on line 9 of /etc/httpd/conf.d/stage_template.vhost: Cannot parse condition clause: syntax error, unexpected T_OP_STR_EQ, expecting '('

  • %{host_domain}: I get another error

    AH00526: Syntax error on line 9 of /etc/httpd/conf.d/stage_template.vhost: Cannot parse condition clause: Parse error near '%'

Thanks!

edit: I was using this page as guide.


Solution

<If "false">
...
</If>

Take a look at Expressions in Apache HTTP Server.

EDIT :

if host_domain is not a self created variable make all upper case ${HOST_DOMAIN}.

and wrap it with single quotations:

#<If "'${host_domain}' == 'main'">

Take a look at this.



Answered By - Rarblack