Apache Tomcat 重写

Apache Tomcat 重写

我想要做的是设置一个重写规则,这样当输入 URL 时它将显示为example.com/test

例如,如果可能的话,我会尝试这样做。

我已将 CNAME 设置为site.example.com指向site.devexample.com(供应商端的开发远程环境)

如果用户访问,site.example.com该 URL 将被重写为类似的内容example.com/test

我目前拥有的东西似乎没有起作用,当我访问时site.example.com它保持原样。

# rewrite rules for site.example.com
RewriteCond %{http_host} ^site\.example\.com [NC,OR]
RewriteCond %{http_host} ^www\.site\.example\.com [NC]
RewriteRule $ http://example.com/test/ [R,L]

我是否需要做一个反向代理,然后从那里重写?

编辑:抱歉,我应该解释得更清楚一点。site.example.com 归 test.com(公司 A)所有。因此,我们将 CNAME 更改为指向 site.devEnvironment.com(公司 B.com)

test.com/test 是我们的服务器和目录,尝试将 URL 重写为 test.com/test 而不是 site.example.com

我们的重定向是在 httpd.conf 文件中设置的,不确定这是否也有帮助

答案1

我猜 rewritecond 或 rewritemap 正则表达式不匹配。我发现这些很难猜。

确保你有非常详细的 mod_rewrite 日志记录(apache 2.4 设置日志级别,Apache 2.2 设置重写日志)如果您不是 Web 服务器的管理员,这可能对您没有帮助。

尝试这样的重写规则:

RewriteRule ^foobar /clams/%{HTTP_HOST}/fish [R,L]

由于foobar是无意义的位置,因此它不会干扰实际流量。将浏览器指向foobar,它将重定向到另一个无意义的位置并给您一个错误,但 URL 栏也会告诉您 var%{HTTP_HOST}包含的确切内容。(蛤蜊和鱼将充当引号,因此如果%{HTTP_HOST}包含斜线或空格等棘手的字符,您将会看到它。)

(为了兼容 .htaccess,从 foobar 中删除了 /,感谢 @w3dk)

答案2

我最终做的是设置一个 proxypass /test site.example.com

这样当服务器看到 /test 时,它将加载来自 site.example.com 的内容

相关内容