【发布时间】:2011-06-03 12:32:24
【问题描述】:
我正在尝试在 Apache 中配置 url 重定向。我尝试了一些方法,但没有任何效果。谁能告诉我这个的解决方案,因为它似乎并不难。
我将重定向请求来自:
https://myhost/configuration/jmx-console
到:
http://myanohterhost/jmx-console
这是一个 https 到 http 的重定向。
有人能指出正确的方向吗?
非常感谢!
【问题讨论】:
我正在尝试在 Apache 中配置 url 重定向。我尝试了一些方法,但没有任何效果。谁能告诉我这个的解决方案,因为它似乎并不难。
我将重定向请求来自:
https://myhost/configuration/jmx-console
到:
http://myanohterhost/jmx-console
这是一个 https 到 http 的重定向。
有人能指出正确的方向吗?
非常感谢!
【问题讨论】:
您可以使用 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
【讨论】:
在当前服务器(或虚拟主机)`myhost'的配置中,正常的做法如下:
Redirect /configuration/jmx-console http://myanohterhost/jmx-console
编辑: 根据您的评论,您似乎可以使用以下技术之一来做到这一点:
只需将远程服务器的 url 映射到本地 url:
ProxyPass /configuration/jmx-console http://myanohterhost/jmx-console
ProxyPassReverse /configuration/jmx-console http://myanohterhost/jmx-console
RewriteRule ^configuration/jmx-console(.*)$ http://myanohterhost/jmx-console$1 [P]
像这样使用反向代理可能有一些注意事项,我建议您仔细阅读http://httpd.apache.org/docs/2.2/en/mod/mod_proxy.html 以了解使用反向代理时可用的各种选项。
【讨论】:
参考问题标题如何配置 Apache2 以重定向 URL 我会提出对我来说很好的简单解决方案(使用来自 mod_alias 的 RedirectPermanent)。
首先我们检查我们的域是否有正确的 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
最后检查重定向是否有效。
【讨论】:
根据 Apache 网站,您应该不使用 mod_rewrite 来简单地从 http 重定向到 https(或其他方式,这似乎更常见):
http://httpd.apache.org/docs/2.2/rewrite/avoid.html
该网站建议将 mod_alias 与 Redirect 和 RedirectMatch 指令一起使用。
【讨论】:
假设您在主机“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
【讨论】: