【发布时间】: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