Apache HTTP 服务器mod_alias
提供了Redirect
非常适合简单重定向的指令,如下所示:
# Redirect login to https
Redirect permanent /login https://www.example.org/login
虽然许多管理员使用mod_rewrite
重定向,但 Apache 文档何时不使用 mod_rewrite建议一般来说,mod_alias
比 更受欢迎mod_rewrite
。我更喜欢使用mod_alias
。
我可以Redirect
使用阿帕奇变量比如ServerName
?例如,为了强制某些内容仅通过 HTTPS 提供,我需要执行以下操作:
Redirect permanent /login https://%{SERVER_NAME}/login
Redirect permanent /special-project-1 https://%{SERVER_NAME}/special-project-1
Redirect permanent /special-project-2 https://%{SERVER_NAME}/special-project-2
这些都不起作用,并且文字字符串%{SERVER_NAME}
会打印在响应中:
host% curl http://www.example.org/login
...
302 Found
The document has moved <a href="https://%{SERVER_NAME}/login">here</a>.
Apache 变量是否允许与mod_alias
指令一起使用?变量是否可以使用不同的语法?
答案1
有点晚了,但在查找这个问题的过程中偶然发现了这个线程并找到了解决方案。
使用 Apache 2.4 您无法执行以下操作:
Redirect permanent /login https://%{SERVER_NAME}/login
但你可以这样做:
<Location /login>
Redirect permanent https://%{HTTP_HOST}/login
</Location>
答案2
我相信这里可以回答类似的问题: https://serverfault.com/a/415796/337307
@shanemadden写道:
你不能。Redirect 能够处理简单的重定向,即将客户端发送到单个特定名称,但无法进行复杂的替换(撇开 %{HTTP_HOST} 是 mod_rewrite 特定的事实)。
坚持使用 mod_rewrite。mod_alias 无法满足您的需要。