Apache VirtualHost - 透明地从一个域重定向到另一个域的特定页面

Apache VirtualHost - 透明地从一个域重定向到另一个域的特定页面

我想重定向www.example.itwww.example.com/index-it.php

该网站仅为一个页面的网站。

我希望这能够透明地发生,即重定向后 www.example.it 仍会显示在地址栏上。

我已尝试过此操作但它会产生内部服务器错误。

<VirtualHost *:80>
ServerName www.example.it

RewriteEngine on
RewriteRule ^/.*$ http://www..com/index-it.php [P,L]

</VirtualHost>

这会起作用,它不提供透明的重定向:

<VirtualHost *:80>
ServerName www.example.it

RewriteEngine on
#RewriteRule ^/.*$ http://www.example.com/index-it.php [P,L]

Redirect 301 / http://www.example.com/index-it.php

</VirtualHost>

有什么想法吗?谢谢。

答案1

我建议您实际上不要重定向,因为“重定向”实际上意味着“告诉浏览器改为请求其他页面”。

另外,我敢打赌你实际上并不想重定向全部请求,因为如果您的浏览器 URL 栏显示www.example.it并且它已加载的页面有对的引用/logo.png,则浏览器将发出请求http://www.example.it/logo.png,并且会惊讶地得到www.example.com/index-it.php响应的输出。

因为你使用了[P]标志,所以你实际采取的方法是反向代理www.example.it所有对的请求www.example.com,并在代理之前,内部重写www.example.it对 的某些索引请求子集/index-it.php何时不使用重写页面将“代理”列为不应使用的情况之一mod_rewritemod_proxy它本身会帮助您进行代理;mod_rewrite文档实际上建议优先使用mod_proxy指令而不是P标志。

阅读mod_proxy的警告,确保在打开服务器之前服务器是安全的。索引文件处理可能是 的合理用途mod_rewrite,但它不需要使用标志P

答案2

只是一个愚蠢的问题:mod_proxy 没有启用

相关内容