3

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 these comparisons

  • "${host_domain} == 'main'"

    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} == 'main'"

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

  • "'${host_domain}' == 'main'"

    AH00526: Syntax error on line 10 of /etc/httpd/conf.d/available_vhosts/stage_template.vhost: ServerAlias not allowed here

I was using this page as guide. But it's doesn't have any examples when using custom variables.

Thanks!

1 Answer 1

2

Apache's If-Else statements are evaluated at request time, while Virtual Host Matching has its own logic. That's why it's likely that If-Else wouldn't work with ServerAlias at all, or it would give unexpected results. On the other hand, you state that your "${host_domain} can have 3 possible values". What you are trying to do is overly complicated, and you have several better approaches.

  • Use separate <VirtualHost> for each main, staff and customer.
  • Add all these virtualhost to a single <VirtualHost> with every option matching a single ServerAlias. Then, you can use If-Else statements inside the <VirtualHost> to alter specific configuration based on the %{HTTP_HOST} variable.
  • If there was several similar <VirtualHost>s (way more than just three) with just a certain changing parts in the configuration, Apache Module mod_macro would have been your choice. As the macros are evaluated when the server starts, building a static configuration out of them, it's more efficient than comparing the variables at request time.
1
  • 1
    Can you please give an example (or maybe a link) to bullet point 2? thanks again! Commented Nov 25, 2018 at 23:54

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.