将域A中的URL重定向到另一个域,但仅在域A上存在应用程序

时间:2015-04-07 14:44:26

标签: apache .htaccess mod-rewrite rewrite

我要求OHS服务器(apache)将所有请求从域A重定向到域B,但页面只需要从域A呈现。以下配置似乎不起作用。

RewriteCond %{HTTP_HOST} ^http://portal.mycompany.com$
RewriteRule ^(.*)$ http://newportal.mycompany.com:85/$1 [R=301,L]

我做错了吗?

4 个答案:

答案 0 :(得分:0)

通过这种方式,您的域A正在向用户浏览器发送重定向,因此该页面将从域B提供。

如果您必须让域A提供来自域B的页面,但用户不必查看域B,您可以从Proxy检查ProxyPass和/或mod_proxy规则。

还有一件事,如果您通过域A代理域B,则可能需要重写内页链接,因此请查看ProxyHTMLEnableProxyHTMLURLMap

答案 1 :(得分:0)

对于域重定向,您是否可以使用域名注册商中的CNAME或A记录将新域名B指向A?

答案 2 :(得分:0)

有几个问题。您无法执行301重定向并期望继续使用域A.您可以通过使用mod_proxyP标志来实现此功能。此外,http_host变量仅与主机名匹配。

您需要确保mod_proxy已启用,您可以尝试此操作。

RewriteEngine On
RewriteCond %{HTTP_HOST} ^portal.mycompany.com$
RewriteRule ^(.*)$ http://newportal.mycompany.com:85/$1 [P]

答案 3 :(得分:0)

点(。)是RewriteCond模式中的一个特殊字符,使用反斜杠转义它

试试这个

 RewriteEngine on
 RewriteBase /
 RewriteCond %{HTTP_HOST} ^www\.portal\.mycompany\.com$ [NC]
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteRule ^(.*)/?$ http://newportal.mycompany.com:85/$1 [R=301,QSA,NC,L]