Apache Tomcat重写

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

所以举个例子,我试图做到这一点,如果这是可能的。

我已经将site.example.com的CNAME设置为指向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(companyB.com)

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

我们的redirect在httpd.conf文件中设置,不知道这是否也有帮助

我要猜测rewritecond或rewritemap正则expression式不匹配。 我发现那些很滑。

确保你有非常详细的mod_rewrite日志logging(apache 2.4设置LogLevel ,apache 2.2设置RewriteLog )如果你不是Web服务器的pipe理员,这可能不会帮助你。

尝试像这样的重写:

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

由于foobar是一个无意义的位置,它不会干扰真正的交通。 将您的浏览器指向foobar ,它将redirect到另一个无意义的位置,并给您一个错误,但是URL栏也会准确地告诉您%{HTTP_HOST} var包含的内容。 (蛤蜊和鱼要作为引号,所以如果%{HTTP_HOST}包含一个斜杠或空白其他棘手的字符,你会看到它。)

(从foobar中删除/ .htaccess兼容性,thnx @ w3dk)

我最终做的是build立一个proxypass / test site.example.com

所以,当服务器看到/testing它将加载site.example.com的内容