【问题标题】:How to config Apache2 to redirect URL如何配置 Apache2 以重定向 URL
【发布时间】:2011-06-03 12:32:24
【问题描述】:

我正在尝试在 Apache 中配置 url 重定向。我尝试了一些方法,但没有任何效果。谁能告诉我这个的解决方案,因为它似乎并不难。

我将重定向请求来自:

https://myhost/configuration/jmx-console

到:

http://myanohterhost/jmx-console

这是一个 https 到 http 的重定向。

有人能指出正确的方向吗?

非常感谢!

【问题讨论】:

    标签: redirect apache2


    【解决方案1】:

    您可以使用 RedirectMatch 指令强制 Apache 将用户发送到其他地方:

    RedirectMatch 301 ^(.*)$ http://www.anotherserver.com$1
    

    请参阅以下内容:

    http://httpd.apache.org/docs/2.2/mod/mod_alias.html#redirectmatch

    http://en.wikipedia.org/wiki/URL_redirection#HTTP_status_codes_3xx

    【讨论】:

    • 您好,感谢您的回答。然而,这并不是我所需要的。 Redirect 进行浏览器重定向,新定向的 URL 将显示在浏览器中。我需要的是一种只显示新 URL myanohterhost/jmx-console 内容的方法。浏览器中的 URL 仍然显示 https://myhost/configuration/jmx-console
    • 不是这样。您只是将您的评论复制到另一张海报上。我刚刚在我的服务器上试过这个,它就像一个魅力。
    【解决方案2】:

    在当前服务器(或虚拟主机)`myhost'的配置中,正常的做法如下:

    Redirect /configuration/jmx-console http://myanohterhost/jmx-console
    

    编辑: 根据您的评论,您似乎可以使用以下技术之一来做到这一点:

    1。 mod_proxy,使用反向代理设置

    只需将远程服务器的 url 映射到本地 url:

    ProxyPass /configuration/jmx-console http://myanohterhost/jmx-console
    ProxyPassReverse /configuration/jmx-console http://myanohterhost/jmx-console
    

    2。 mod_rewrite 使用代理吞吐量功能

    RewriteRule ^configuration/jmx-console(.*)$ http://myanohterhost/jmx-console$1 [P]
    

    像这样使用反向代理可能有一些注意事项,我建议您仔细阅读http://httpd.apache.org/docs/2.2/en/mod/mod_proxy.html 以了解使用反向代理时可用的各种选项。

    【讨论】:

    • 您好,感谢您的回答。然而,这并不是我所需要的。 Redirect 进行浏览器重定向,新定向的 URL 将显示在浏览器中。我需要的是一种只显示新 URL myanohterhost/jmx-console 的内容的方法。浏览器中的 URL 仍然显示 https://myhost/configuration/jmx-console。
    【解决方案3】:

    参考问题标题如何配置 Apache2 以重定向 URL 我会提出对我来说很好的简单解决方案(使用来自 mod_aliasRedirectPermanent)。

    首先我们检查我们的域是否有正确的 DNS 条目,例如 A 类型条目:

    name somefancydomain.com
    TTL 600
    type A
    value 10.100.10.100
    

    CNAME 条目:

    name www.somefancydomain.com
    TTL 600
    type CNAME
    value somefancydomain.com
    

    然后我们去 ubuntu webserver 使用 IP 10.100.10.100 并配置新的虚拟主机:

    cd /etc/apache2/sites-available/
    sudo vim redirect.conf
    

    如下粘贴配置并保存:

    <VirtualHost *:80>
    
        ServerName somefancydomain.com
        ServerAlias www.somefancydomain.com
    
        RedirectPermanent / https://redirectedurl.com/
    
        ServerAdmin admin@redirectedurl.com
    
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
    
    </VirtualHost>
    

    启用新的虚拟主机并重新加载 apache:

    sudo a2ensite redirect.conf
    sudo service apache2 reload
    

    最后检查重定向是否有效。

    【讨论】:

      【解决方案4】:

      根据 Apache 网站,您应该使用 mod_rewrite 来简单地从 http 重定向到 https(或其他方式,这似乎更常见):

      http://httpd.apache.org/docs/2.2/rewrite/avoid.html

      该网站建议将 mod_aliasRedirectRedirectMatch 指令一起使用。

      【讨论】:

        【解决方案5】:

        假设您在主机“myhost”上执行此操作

        1/触摸/etc/apache2/conf-available/my-redirect.conf

        2/ 编辑 my-redirect.conf 并添加

        Redirect permanent /configuration/jmx-console http://myanotherhost/jmx-console
        

        3/ a2enconf my-redirect.conf

        4/ apache2ctl 配置测试

        5/ 这应该给出“语法正常”

        6/ systemctl restart apache2

        【讨论】:

          猜你喜欢
          • 2015-02-27
          • 1970-01-01
          • 2010-09-28
          • 2013-08-28
          • 1970-01-01
          • 1970-01-01
          • 2015-09-20
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多