我想重定向www.example.it
至www.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_rewrite
。mod_proxy
它本身会帮助您进行代理;mod_rewrite
文档实际上建议优先使用mod_proxy
指令而不是P
标志。
阅读mod_proxy
的警告,确保在打开服务器之前服务器是安全的。索引文件处理可能是 的合理用途mod_rewrite
,但它不需要使用标志P
。
答案2
只是一个愚蠢的问题:mod_proxy 没有启用