【发布时间】:2014-03-18 15:11:28
【问题描述】:
我有一个托管在 OpenShift 上的网站,其 URL 类似于 https://myproject.myname-rhcloud.com/myapp。我通过 git 部署在那里,它工作正常,但 URL 不太容易记住。
然后我购买了一个域名(例如,http://www.first-last.fr),并带有一个有限的 Apache 主机,允许我在那里部署我自己的 .htaccess。
我试图从我的注册商处进行重定向,但这最终出现在一个隐藏页面标题的 HTML 框架中:标题始终显示根 URL,即使在站点的子文件夹中也是如此,所以我看到了 @ 987654323@,即使我正在访问http://www.first-last.fr/myapp/glossary。
我想要的是通过我的新 URL (http://www.first-last.fr) 访问真实站点 (https://myproject.myname-rhcloud.com/myapp),但有以下限制:
- 将原始根替换为目标根
- 让子文件夹跟随新根目录:https://myproject.myname-rhcloud.com/myapp/glossary 应替换为 http://www.first-last.fr/myapp/glossary,以此类推所有子文件夹
- 在页面标题中包含整个 URL
理想情况下,无需接触原始网站。
我检查了许多类似的 SO 问题,但我没有找到关于这个特定请求的明确答案(我很高兴错了,如果是,请告诉我好的链接)!
我也尝试过 URL 重写,但没有成功,当我输入 http://www.first-last.fr/myapp 时,我的资源管理器显示 https://myproject.myname-rhcloud.com/myapp。
编辑:按照 Jack 的建议,我尝试了 mod_proxy。这是我的 .htaccess:
SetEnv PHP_VER 5_TEST
SetEnv REGISTER_GLOBALS 0
Options +FollowSymLinks -MultiViews
ProxyPreserveHost On
# Turn mod_rewrite on
RewriteEngine On
# RewriteBase /
RewriteCond %{HTTP_HOST} ^(www\.)?first-last\.fr$ [NC]
RewriteRule ^ https://myproject.myname.rhcloud.com%{REQUEST_URI} [L,P]
# ProxyPass / https://myproject.myname.rhcloud.com/
ProxyPassReverse / https://myproject.myname.rhcloud.com/
我也尝试了一个更简单的版本:
SetEnv PHP_VER 5_TEST
SetEnv REGISTER_GLOBALS 0
Options +FollowSymLinks -MultiViews
ProxyPreserveHost On
ProxyPass / https://myproject.myname.rhcloud.com/
ProxyPassReverse / https://myproject.myname.rhcloud.com/
但我的 Apache 日志中有同样的错误:ProxyRequests not allowed here。你有什么想法吗?
【问题讨论】:
标签: apache .htaccess url mod-rewrite mod-proxy