
  {%- if site.locations is defined %}
  {%- for location in site.locations %}
  {%- if location.script is defined and location.script %}
  ScriptAlias {{ location.uri }} {{ location.path }}
  {%- else %}
  Alias {{ location.uri }} {{ location.path }}
  {%- endif %}
  {%- if location.auth is defined %}
  {%- set auth = location.auth %}
  <Location {{ location.uri }}>
  {%- include "apache/files/_auth.conf" %}
  </Location>
  {%- endif %}
  {%- endfor %}
  {%- endif %}
