0

我有一个页面是helpdesk.xxx.com,我需要将其重定向到外部 URL https://xxx.dyndns.org:49551 到目前为止,它可以使用此代码

RewriteEngine on

AddHandler application/x-httpd-php5s .php

RewriteCond %{HTTP_HOST} ^helpdesk\.xxx\.com$
RewriteRule ^/?$ "https\:\/\/xxx\.dyndns\.org\:\49551" [L]

问题是我需要当用户访问helpdesk.xxx.com时,url 在 redirect 之后不会保持不变。

我需要网址保持不变或至少我可以隐藏端口

  1. 我尝试使用 iframe,但数字证书有问题,所有浏览器都阻止了该页面
  2. 我尝试在 .htaccess 文件中使用反向代理,但我不知道我在做什么
  3. 作为外部 dns,我可以管理 php 的配置文件,我只能使用 php 中的 .htaccess 或我自己域中的 iis 6
4

1 回答 1

0

https://xxx.dyndns.org:49551它在重写规则的目标中时,它告诉 apache 将浏览器重定向到新的 URL。这意味着浏览器地址栏中的 URL 会发生变化。您需要使用反向代理。

理想情况下,您确实希望使用ProxyPassand之类的指令ProxyPassMatch,因为您还可以将它们与ProxyPassReverse代理传递 cookie 指令配对。后一个指令允许重写位置字段,因此当发送到的请求https://xxx.dyndns.org:49551最终作为重定向返回时,重定向的位置将被重写helpdesk.xxx.com而不是代理位置。与 cookie 域和路径相同。但是,这些指令只能进入服务器或虚拟主机配置,而不能进入 htaccess 文件。因此,如果您无权访问这些内容,则需要依赖 mod_rewrite。

所以 mod_rewrite 有一个P可以使用的标志。它告诉重写引擎将反向代理请求传递给 mod_proxy。这应该可以正常工作,但您不会得到任何位置重写或 mod_proxy 的 cookie 重写。因此,您只需要更改规则以P在方括号中包含 a :

RewriteRule ^/?$ "https\:\/\/xxx\.dyndns\.org\:\49551" [L,P]

除非您加载了 mod_proxy 模块,否则这将不起作用。

于 2012-08-20T18:32:38.190 回答