如何使用Apache Rewrite将用户重定向到完全限定的域名?

如何使用Apache Rewrite将用户重定向到完全限定的域名?,apache,mod-rewrite,Apache,Mod Rewrite,我对apache mod_重写模块非常陌生。我有一个叫做http://abc在我的公司内部网中。我希望用户被重定向到http://abc.somecompanyname.com每当他们键入http://abc转到URL栏。请有人提供一个例子,或者给我指出正确的方向 我想这应该是一个很容易回答的问题。谢谢大家的支持 -标记在处理abc请求的服务器上,您可以通过这样简单的VirtualHost定义来实现: <VirtualHost *:80> ServerName abc

我对apache mod_重写模块非常陌生。我有一个叫做
http://abc
在我的公司内部网中。我希望用户被重定向到
http://abc.somecompanyname.com
每当他们键入
http://abc
转到URL栏。请有人提供一个例子,或者给我指出正确的方向

我想这应该是一个很容易回答的问题。谢谢大家的支持


-标记

在处理abc请求的服务器上,您可以通过这样简单的VirtualHost定义来实现:

<VirtualHost *:80>
    ServerName abc
    RewriteEngine on
    RewriteRule ^/(.*)$ http://abc.somecompanyname.com/$1 [R,L]
</VirtualHost>

服务器名abc
重新启动发动机
重写规则^/(.*)$http://abc.somecompanyname.com/$1[R,L]

我发现Apache2中的建议效果更好

我的结局是:

RewriteEngine on
RewriteCond %{HTTP_HOST}   !^foo\.bar\.com [NC]
RewriteCond %{HTTP_HOST}   !^$ 
RewriteRule ^/(.*)         http://foo.bar.com/$1 [L,R]
Apache2示例中没有“RewriteEngine on”行。也许默认情况下它通常是打开的,但在我的情况下,我需要添加它。

引用自:

解决这一问题的最佳方法根本不涉及mod_重写,而是使用虚拟主机中针对非规范主机名的重定向指令


ServerName undesired.example.com
ServerAlias example.com notthis.example.com
重定向/http://www.example.com/
服务器名www.example.com

这确实需要另一个虚拟主机,但并不缺少。该解决方案对我来说非常有效-我喜欢“不需要的”主机的重定向和规范主机的配置是如何分开的。

这很好,甚至路径名和get参数也被重定向。这是一个比公认答案更好的解决方案。你真的不想太多地修改。最好把重写作为最后手段。我们能在没有ChanginURL的情况下重定向他吗?例如,如果我编写它,它将在不更改浏览器url的情况下将查询重定向到?rsabir:您所问的通常被称为代理而不是重定向。虽然这是公认的答案,但确实有效,请使用
重定向
指令,通过@ssc查看下面更好的答案。
<VirtualHost *:80>
  ServerName undesired.example.com
  ServerAlias example.com notthis.example.com

  Redirect / http://www.example.com/
</VirtualHost>

<VirtualHost *:80>
  ServerName www.example.com
</VirtualHost>