【问题标题】:URL rewriting to replace URLs of original siteURL重写以替换原始站点的URL
【发布时间】: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),但有以下限制:

理想情况下,无需接触原始网站。

我检查了许多类似的 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


    【解决方案1】:

    看看mod_proxy。例如,您也许可以做这样的事情。这将进入您的短域名的 apache conf vhost 配置中。查看文档以获取更多信息。

    http://httpd.apache.org/docs/2.2/mod/mod_proxy.html

    SSLProxyEngine On
    ProxyPass / https://myproject.myname-rhcloud.com/myapp
    ProxyPassReverse / https://myproject.myname-rhcloud.com/myapp
    

    【讨论】:

    • 谢谢,我会在接下来的几天里尝试测试并告诉你。
    • mod_proxy 看起来很棒,但是我在实现它时仍然遇到问题 - 请参阅我的编辑。
    • 感谢您的帮助;但请注意,.htaccess 中不允许使用 ProxyPassProxyPassReverse
    【解决方案2】:

    朋友帮我解决了这个问题:

    SetEnv PHP_VER 5_TEST
    SetEnv REGISTER_GLOBALS 0
    
    Options +FollowSymLinks -MultiViews
    
    # Turn mod_rewrite on
    RewriteEngine On
    RewriteRule ^/?(.*)$ http://myproject-myname.rhcloud.com/$1 [L,P]
    

    这允许有正确的代理到http://www.first-last.fr/myapp/http://myproject-myname.rhcloud.com/。但请注意,http://www.first-last.fr/myapp(没有结束斜线)不能用作代理,而是转换为“内部”站点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-22
      • 1970-01-01
      • 2011-04-28
      • 1970-01-01
      • 2011-10-13
      • 2011-04-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多