首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在目标中使用RedirectMatch和HTTP_HOST

在目标中使用RedirectMatch和HTTP_HOST
EN

Stack Overflow用户
提问于 2016-10-27 15:58:26
回答 3查看 8.7K关注 0票数 9

我一直读到,在可能的情况下,我不应该使用mod_rewrite。因此,我试图用RedirectMatch对https进行http重写。

问题:如何在参数中使用RedirectMatch和使用Apache变量(例如%{HTTP_HOST})?

此代码无法向客户端返回响应(Chrome):

代码语言:javascript
运行
复制
RedirectMatch ^(.*) https://%{HTTP_HOST}/$1

我最近问了一个类似的问题,但它可能过于冗长,缺乏答案的方向:重写

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-10-27 16:12:01

不,不能在重定向/重定向匹配中使用该类型的变量。如果需要变量(如%{HTTP_HOST} ),请使用mod_rewrite。

注意:我赞扬您没有立即尝试使用mod_rewrite,因为即使是最简单的重定向,大多数人也会选择mod_rewrite,这显然是过分的,而且大多数情况下它只是想让事情变得不必要地复杂。

票数 9
EN

Stack Overflow用户

发布于 2016-10-27 17:42:24

如果您使用的是2.4.19或更高版本,那么指令有一个有点模糊的特性:将其放入LocationLocationMatch中将启用表达式语法

所以你的例子可以写成

代码语言:javascript
运行
复制
<LocationMatch ^(?<PATH>.*)>
    Redirect "https://%{HTTP_HOST}%{env:MATCH_PATH}"
</LocationMatch>

(在这里,?<PATH>符号意味着匹配捕获将保存到一个名为MATCH_PATH的环境变量中。这就是我们以后如何在Redirect中使用它。)

如果始终使用整个请求路径重定向,则会更容易,因为可以使用REQUEST_URI变量完全替换捕获组:

代码语言:javascript
运行
复制
<Location "/">
    Redirect "https://%{HTTP_HOST}%{REQUEST_URI}"
</Location>

现在,这是否比仅在这一种情况下使用mod_rewrite更容易维护/理解?也许不是。但这是个选择。

票数 15
EN

Stack Overflow用户

发布于 2021-05-27 08:31:33

为将来可能面临同样情况的用户写作。

不确定如何添加vhost条目。

我想这个vhost条目是在一些编程脚本的帮助下自动添加的。VhostDirective和ServerName一起使用吗?

代码语言:javascript
运行
复制
<VirtualHost *:8080>
    ServerName example.domain.com
</VirutalHost>

如果是这样,则可以使用相同的域值填充RedirectMatch字段。

如果要手动添加vhost条目,只需显式地写入域URL值,而不是HTTP_HOST。

或者让我知道这是不是另一种情况。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40289269

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档