【问题标题】:Apache + Tomcat with mod_proxy - redirect to www not working带有 mod_proxy 的 Apache + Tomcat - 重定向到 www 不起作用
【发布时间】:2012-10-08 19:28:15
【问题描述】:

我在尝试将我的网站的根目录从 mywebsite.com/mywebsite 重写为 www.mywebsite.com/mywebsite 时遇到问题。

问题与使用mod_proxy调用Tomcat有关

文件 proxy.conf

<ifmodule mod_proxy.c>
    ProxyRequests Off
    ProxyPreserveHost On

    <proxy *>
       AddDefaultCharset off
       Order deny,allow
       Allow from all
    </proxy>

    ProxyVia On 
    ProxyPass /mywebsite ajp://91.222.222.222:8009/mywebsite
    ProxyPassReverse /mywebsite ajp://91.222.222.222:8009/mywebsite

    <location miaplicacion>
        Order allow,deny
       Allow from all
    </location>
</ifmodule>

文件 .htaccess

RewriteCond %{HTTP_HOST} !^www.mywebsite.com [NC] 
RewriteRule ^(.*)$ http://www.mywebsite.com/$1 [NC,L,R=301]

关键是,如果我编写 mywebsite.com/something,规则就可以正常工作。在这种情况下,它会正确重定向到 www.mywebsite.com/something

但是,代理似乎优先于重写规则中写入的内容。也就是说,当它找到 mywebsite.com/mywebsite 时,不是将其重写为 www.mywebsite.com/mywebsite 然后调用 Tomcat,而是直接调用它而不接触 URL。

您知道在代理到 Tomcat 之前强制重写 URL 的任何方法吗?

【问题讨论】:

  • 是的,删除 !在第一行的 www 之前(以及您想要做的 www.)
  • 这样结果是一样的:当/(mywebsite)后面的内容和www.而 .com 它什么也不做,只是将其保留为 mywebsite.com/mywebsite
  • 您的 htaccess 文件在您的文档根目录中吗?还是在虚拟主机配置中?
  • 在我的 .htaccess 文件中。最后好像和mod_proxy有关。

标签: apache mod-rewrite redirect no-www


【解决方案1】:

试试这个作为你的第一行:

RewriteCond %{HTTP_HOST} ^mywebsite.com$ [NC]

【讨论】:

  • 这很奇怪,因为它应该可以工作......但是无论如何都应该在服务器故障时问这种问题:)
猜你喜欢
  • 2013-07-11
  • 1970-01-01
  • 2016-01-28
  • 2021-09-16
  • 2023-04-02
  • 2010-10-14
  • 2014-02-04
相关资源
最近更新 更多