![Apache 仅在内部重写子域名](https://linux22.com/image/493690/Apache%20%E4%BB%85%E5%9C%A8%E5%86%85%E9%83%A8%E9%87%8D%E5%86%99%E5%AD%90%E5%9F%9F%E5%90%8D.png)
我在网上搜索了好几天,但还是没找到解决问题的方法。假设我有一个在 mydomain.com 上运行的 Web 应用程序(使用 Ruby on Rails 和 apache 乘客模块编写)
我所需要的只是将指向 www.domain2.com 的用户重写为 domain2.mydomain.com,使用户浏览器停留在 www.domain2.com,但在我的应用程序中“捕获”子域字符串。
这是我的 apache 配置 (vhost domain2.com) 用于该作业:
RewriteEngine 在 RewriteCond %{HTTP_HOST} ^(www.)?domain2.com$ RewriteRule ^(.*)http://domain2.mydomain.com1 美元 [P,R=301,L]
但它不起作用。一切正常(它指向我的应用程序等等),但应用程序捕获了“www”子域字符串(位于用户浏览器上),但不是预期的字符串。
没有“P”标志的 RewriteRule 工作正常。我的应用程序捕获正确的域名(domain2),但用户浏览器中的 URL 发生变化(变为 domain2.mydomain.com)
我该怎么办?也许这样的把戏是不可能做到的?
非常感谢您的回答。
答案1
在 RewriteRule 中同时使用 P(代理)和 R(重定向)标志没有多大意义。您应该只使用 P(代理)标志。
看这里有关使用 Apache httpd 及其 mod_proxy 进行反向代理设置的详细信息。