# None of the Maven generated site uses MultiViews and this features doesn't interact very well with the redirect
# for the Axis2 download pages (because it interprets /axis2/java/core/download as an alias of /axis2/java/core/download.html)

Options -MultiViews

# Up to release 1.5.1, we kept the documents from previous releases. We don't do that
# anymore, but we should redirect links for these documents.

RedirectMatch permanent ^/axis2/java/core/[0-9_]+/api/(.*)$ http://axis.apache.org/axis2/java/core/api/$1
RedirectMatch permanent ^/axis2/java/core/[0-9_]+/([^/]*)$ http://axis.apache.org/axis2/java/core/docs/$1
RedirectMatch permanent ^/axis2/java/core/[0-9_]+/((adb|images|jibx|src)/.*)$ http://axis.apache.org/axis2/java/core/docs/$1
RedirectMatch permanent ^/axis2/java/core/tools/[0-9_]+/(.*)$ http://axis.apache.org/axis2/java/core/tools/$1
RedirectMatch permanent ^/axis2/java/core/download/([0-9_]+)/download\.cgi$ http://axis.apache.org/axis2/java/core/download.cgi#a$1

# Since 1.6.4/1.7.0, Axis2 core uses the more standard "apidocs" instead of "api"

RedirectMatch permanent ^/axis2/java/core/api$ http://axis.apache.org/axis2/java/core/apidocs/
RedirectMatch permanent ^/axis2/java/core/api/(.*)$ http://axis.apache.org/axis2/java/core/apidocs/$1

# Mark very old (Axis 2.0 milestone) links as gone

Redirect gone /axis2/java/core/multiproject

# The site for Axis2/C was originally under ws.apache.org/axis2/c. Since ws.apache.org/axis2
# is redirected to axis.apache.org/axis2/java/core, we need a second redirect to the Axis2/C site.
# The same applies to Rampart and Sandesha2.

Redirect permanent /axis2/java/core/c http://axis.apache.org/axis2/c/core
Redirect permanent /axis2/java/rampart/c http://axis.apache.org/axis2/c/rampart
Redirect permanent /axis2/java/sandesha/c http://axis.apache.org/axis2/c/sandesha

# Redirections for specific pages that have been moved elsewhere

Redirect permanent /axis2/java/core/userguide.html http://axis.apache.org/axis2/java/core/docs/userguide.html
Redirect permanent /axis2/java/core/OMTutorial.html http://ws.apache.org/axiom/OMTutorial.html
Redirect permanent /axis2/java/core/docs/OMTutorial.html http://ws.apache.org/axiom/OMTutorial.html
Redirect permanent /axis2/java/core/docs/mail-configuration.html http://axis.apache.org/axis2/java/core/docs/mail-transport.html
Redirect permanent /axis2/java/core/docs/security-module.html http://axis.apache.org/axis2/java/rampart/
RedirectMatch permanent ^/axis2/java/core/modules/(wss4j|rampart)/[0-9_]+/security-module.html$ http://axis.apache.org/axis2/java/rampart/
Redirect permanent /axis2/java/core/docs/CodegenTools-EclipsePlugin.html http://axis.apache.org/axis2/java/core/tools/eclipse/wsdl2java-plugin.html
