在 Apache 2.4 中链接 URL 重写规则

Posted

技术标签:

【中文标题】在 Apache 2.4 中链接 URL 重写规则【英文标题】:Chaining URL Rewrite rules in Apache 2.4 【发布时间】:2016-03-25 11:38:05 【问题描述】:

需要一些帮助写在阿帕奇V2.4重新写入规则。

我有其在托管的Tomcat v8.0.29具有这种URL的web应用程序:

http://myapptest:8080/app

通过了mod_jk和Apache重写引擎的魔力,我已经能够清理一下只是http://myapptest。 P>

我现在已经在SSL配置Apache,我需要http://myapptest和https://myapptest到重定向到https://myapptest.domain.com。

在的httpd-ssl.conf中,我有这个虚拟主机配置,其处理重写东西:

<VirtualHost _default_:443>
  ServerName myapptest
  RewriteEngine on    
  RewriteRule   ^/$ /app [NC,PT,L]    
  DocumentRoot "c:/apache/tomcat/webapps/app"
  JkMount /* myapp          
  ErrorLog "logs/myapptest-error.log"
  CustomLog "logs/myapptest-access.log" common
  ...other stuff...
</VirtualHost>

然后,在的httpd-vhosts.conf我处理为http流量重定向端口80上 P>

<VirtualHost myapptest:80> 
    ServerName myapptest
    Redirect      /   https://myapptest.domain.com/
</VirtualHost>

在最后一块,我缺少的是如何处理重定向为https://myapptest? P>

如果有更好的,更清洁的方式来处理这个我到非常开放的,因为我不是这东西的专家。

【问题讨论】:

【参考方案1】:

避免在 VirtualHost 标记中使用主机名:

# First listed is the default for port 80
<VirtualHost *:80> 
    ServerName myapptest.domain.com
</VirtualHost>

# Capture the short hostname and redirect to FQDN
<VirtualHost *:80> 
    ServerName myapptest
    Redirect      /   https://myapptest.domain.com/
</VirtualHost>

【讨论】:

谢谢,召集人。我没有看到 myaptest 将如何被重定向到 FQDN? 当主机头是“myapptest”时,它将被发送到第二个虚拟主机。第二个虚拟主机使用 Redirect 指令将所有内容重定向到 FQDN。 太棒了!如果我使用myapptest,它也会被重定向到myapptest.domain.com? "HTTPS://" 从我的评论中删除了 对 44e 虚拟主机做同样的事情

以上是关于在 Apache 2.4 中链接 URL 重写规则的主要内容,如果未能解决你的问题,请参考以下文章

从 Apache 2,2 迁移到 Apache 2.4 后,URL 重写不起作用

如何在 apache 2.4 RewriteRule 中使用发布数据规则编写替换和重定向 url(两者同时)?

如何在 .Htaccess 中禁用/不允许共享主机 RewriteLog 时,在 Apache 2 中模拟和测试 URL 重写规则?

Apache URL重写规则

Apache URL重写规则

为 Apache 重写规则没有找到 URL?