使用 Tomcat 7 和 Apache 反向代理进行根重定向

使用 Tomcat 7 和 Apache 反向代理进行根重定向

预期行为:请求示例.com应该重定向到example.com/

问题:在浏览器(Firefox)中请求示例.com成功。浏览器中的请求example.com/重定向至示例.com,这是倒退的。使用 curl,两个请求都不会重定向,并且都提供相同的内容。

$ curl -D - example.com
HTTP/1.1 200 OK
Date: Sun, 23 Oct 2011 05:54:28 GMT
Content-Type: text/plain;charset=ISO-8859-1
Content-Length: 27
Connection: close

Servlet handling request: /index.html

$ curl -D - example.com/
HTTP/1.1 200 OK
Date: Sun, 23 Oct 2011 06:01:24 GMT
Content-Type: text/plain;charset=ISO-8859-1
Content-Length: 27
Connection: close

Servlet handling request: /index.html

对 Tomcat 的直接请求按预期运行。

$ curl -D - localhost:8080/myapp
HTTP/1.1 302 Moved Temporarily
Server: Apache-Coyote/1.1
Location: http://localhost:8080/myapp/
Transfer-Encoding: chunked
Date: Sun, 23 Oct 2011 05:50:20 GMT

<html><body><p>Redirecting to <a href="http://localhost:8080/myapp/">http://localhost:8080/myapp/</a></p></body></html>

我认为问题出在我的反向代理配置上。 (我从 webapp 中的 /a 目录为 Apache 提供静态内容。)

<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /usr/share/tomcat7/webapps/myapp

    RewriteEngine On
    RewriteCond %{REQUEST_URI} !^/a/
    RewriteRule (.*) ajp://localhost:8009/myapp$1 [P]

    <Directory /usr/share/tomcat7/webapps/myapp/a>
        Order deny,allow
        Allow from all
    </Directory>

    <Directory /usr/share/tomcat7/webapps/myapp>
        Order deny,allow
        Deny from all
    </Directory>
</VirtualHost>

答案1

http://example.com/完全相同- 两者都是对路径http://example.com的请求。路径不能为空:“www.example.com/如果 URL 中不存在 abs_path,则在用作资源的请求 URI 时必须将其指定为“/”“。因此,/ 没有重定向,这可能只是不同 UI 的不同行为。

/myapp但是,它与:不同,/myapp/并且/myapp是两个不同的 URL,在这里您可以执行重定向、提供不同的页面等等。

相关内容