这是我的 apache 配置(其中最有趣的部分):
<VirtualHost *:80>
ServerName example.com
...
</VirtualHost>
运行良好,我的服务器正确响应example.com:80
HTTP 请求。现在我要为该域添加一个别名。我希望所有请求都my-new-domain.com:80/test
产生与 相同的响应example.com
,例如:
my-new-domain.com/test/xyz -> example.com/xyz
重要的是,我不想看到 HTTP 重定向(301 代码)。我想example.com
对用户隐藏 URL。他所能看到的全部就是my-new-domain.com/test
URL。
答案1
放
ServerAlias my-new-domain.com
在 VirtualHost 部分中
重写
RewriteCond %{HTTP_HOST} ^my-new-domain\.com
RewriteRule /test/(.*) /$1 [QSA,L,P]
答案2
将 mod_rewrite 与 mod_proxy 结合使用(https://httpd.apache.org/docs/2.2/mod/mod_rewrite.html)。否则,如果域不同,即使两个域都由同一主机提供服务,mod_rewrite 也会执行外部重写。
就像是
重写规则 ^http://my-new-domain.com/test http://example.com[QSA,P]
另一个解决方案是test
在 my-new-domain.com 的根目录中创建到 example.com 根目录的符号链接。