#
# 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.
#

Redirect /download.html /download.cgi
Redirect /0.6.1-incubating-docs/download.html /0.6.1-incubating-docs/download.cgi
Redirect /0.6.2-incubating-docs/download.html /0.6.2-incubating-docs/download.cgi
Redirect /0.7.0-incubating-docs/download.html /0.7.0-incubating-docs/download.cgi
Redirect /0.6.3-docs/download.html /0.6.3-docs/download.cgi
Redirect /0.6.4-docs/download.html /0.6.4-docs/download.cgi
Redirect /0.6.5-docs/download.html /0.6.5-docs/download.cgi
Redirect /0.6.6-docs/download.html /0.6.6-docs/download.cgi
Redirect /0.6.7-docs/download.html /0.6.7-docs/download.cgi
Redirect /0.6.8-docs/download.html /0.6.8-docs/download.cgi
Redirect /0.6.9-docs/download.html /0.6.9-docs/download.cgi
Redirect /0.7.1-docs/download.html /0.7.1-docs/download.cgi
Redirect /0.8.0-docs/download.html /0.8.0-docs/download.cgi
Redirect /0.8.1-docs/download.html /0.8.1-docs/download.cgi
Redirect /0.8.2-docs/download.html /0.8.2-docs/download.cgi
Redirect /0.8.3-docs/download.html /0.8.3-docs/download.cgi
Redirect /0.8.4-docs/download.html /0.8.4-docs/download.cgi
Redirect /0.9.0-docs/download.html /0.9.0-docs/download.cgi
