# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

ServerTokens ProductOnly
ServerSignature Off

ServerName tobago-demo.apache.org

<VirtualHost *:80>

  ServerName tobago-demo.apache.org
  ServerAdmin dev@myfaces.apache.org

  ErrorLog ${APACHE_LOG_DIR}/error.log
  CustomLog ${APACHE_LOG_DIR}/access.log combined

  ErrorDocument 404 /error-404.html

# Permanent external links:
  Redirect temp /intro.html             "/demo-5-snapshot/content/000-intro/intro.xhtml"
  Redirect temp /getting-started.html   "/demo-5-snapshot/content/000-intro/10-getting-started/Getting_Started.xhtml"
  Redirect temp /whats-new.html         "/demo-5-snapshot/content/000-intro/30-whats-new/What's_New.xhtml"
  Redirect temp /migration.html         "/demo-5-snapshot/content/000-intro/50-migration/Migration.xhtml"
  Redirect temp /compatibility.html     "/demo-5-snapshot/content/000-intro/60-compatibility/Compatibility.xhtml"
  Redirect temp /faq.html               "/demo-5-snapshot/content/000-intro/70-faq/FAQ.xhtml"
  Redirect temp /api.html               "/demo-5-snapshot/content/000-intro/80-api/API.xhtml"
  Redirect temp /download.html          "/demo-5-snapshot/content/000-intro/85-download/Download.xhtml"
  Redirect temp /release-checklist.html "/demo-5-snapshot/content/000-intro/90-release-checklist/Release_Checklist.xhtml"

# 5

#  <Location /demo-5-release/>
#    ProxyPass "http://demo-5-release:8080/demo-5-release/"
#    ProxyPassReverse "http://demo-5-release:8080/demo-5-release/"
#  </Location>

#  <Location /demo-5-staging/>
#    ProxyPass "http://demo-5-staging:8080/demo-5-staging/"
#    ProxyPassReverse "http://demo-5-staging:8080/demo-5-staging/"
#  </Location>

  <Location /demo-5-snapshot/>
    ProxyPass "http://demo-5-snapshot:8080/demo-5-snapshot/"
    ProxyPassReverse "http://demo-5-snapshot:8080/demo-5-snapshot/"
  </Location>

# 4

#  <Location /demo-4-release/>
#    ProxyPass "http://demo-4-release:8080/demo-4-release/"
#    ProxyPassReverse "http://demo-4-release:8080/demo-4-release/"
#  </Location>

#  <Location /demo-4-staging/>
#    ProxyPass "http://demo-4-staging:8080/demo-4-staging/"
#    ProxyPassReverse "http://demo-4-staging:8080/demo-4-staging/"
#  </Location>

  <Location /demo-4-snapshot/>
    ProxyPass "http://demo-4-snapshot:8080/demo-4-snapshot/"
    ProxyPassReverse "http://demo-4-snapshot:8080/demo-4-snapshot/"
  </Location>

# 3

#  <Location /demo-3-release/>
#    ProxyPass "http://demo-3-release:8080/demo-3-release/"
#    ProxyPassReverse "http://demo-3-release:8080/demo-3-release/"
#  </Location>

#  <Location /demo-3-staging/>
#    ProxyPass "http://demo-3-staging:8080/demo-3-staging/"
#    ProxyPassReverse "http://demo-3-staging:8080/demo-3-staging/"
#  </Location>

#  <Location /demo-3-snapshot/>
#    ProxyPass "http://demo-3-snapshot:8080/demo-3-snapshot/"
#    ProxyPassReverse "http://demo-3-snapshot:8080/demo-3-snapshot/"
#  </Location>

# 2

#  <Location /demo-2-release/>
#    ProxyPass "http://demo-2-release:8080/demo-2-release/"
#    ProxyPassReverse "http://demo-2-release:8080/demo-2-release/"
#  </Location>

#  <Location /demo-2-staging/>
#    ProxyPass "http://demo-2-staging:8080/demo-2-staging/"
#    ProxyPassReverse "http://demo-2-staging:8080/demo-2-staging/"
#  </Location>

  <Location /demo-2-snapshot/>
    ProxyPass "http://demo-2-snapshot:8080/demo-2-snapshot/"
    ProxyPassReverse "http://demo-2-snapshot:8080/demo-2-snapshot/"
  </Location>

# 1.5

#  <Location /demo-1-5-release/>
#    ProxyPass "http://demo-1-5-release:8080/demo-1-5-release/"
#    ProxyPassReverse "http://demo-1-5-release:8080/demo-1-5-release/"
#  </Location>

#  <Location /demo-1-5-staging/>
#    ProxyPass "http://demo-1-5-staging:8080/demo-1-5-staging/"
#    ProxyPassReverse "http://demo-1-5-staging:8080/demo-1-5-staging/"
#  </Location>

#  <Location /demo-1-5-snapshot/>
#    ProxyPass "http://demo-1-5-snapshot:8080/demo-1-5-snapshot/"
#    ProxyPassReverse "http://demo-1-5-snapshot:8080/demo-1-5-snapshot/"
#  </Location>

# 1.0

#  <Location /demo-1-0-release/>
#    ProxyPass "http://demo-1-0-release:8080/demo-1-0-release/"
#    ProxyPassReverse "http://demo-1-0-release:8080/demo-1-0-release/"
#  </Location>

#  <Location /demo-1-0-staging/>
#    ProxyPass "http://demo-1-0-staging:8080/demo-1-0-staging/"
#    ProxyPassReverse "http://demo-1-0-staging:8080/demo-1-0-staging/"
#  </Location>

#  <Location /demo-1-0-snapshot/>
#    ProxyPass "http://demo-1-0-snapshot:8080/demo-1-0-snapshot/"
#    ProxyPassReverse "http://demo-1-0-snapshot:8080/demo-1-0-snapshot/"
#  </Location>

</VirtualHost>
