如何在 Apache 2 中创建 URL 别名

如何在 Apache 2 中创建 URL 别名

我的主要网址如下http://apps1.example.com我想创建别名 http://apps1.example.com/svc-base

在我的虚拟主机配置中

<VirtualHost *:80>
 ServerName apps1.example.com

 ProxyPreserveHost On

 ProxyPass / http://123.456.7.8:880/
 ProxyPassReverse / http://123.456.7.8:880/
 
 Alias /svc-base !
 ProxyPass /svc-base http://123.456.7.9:881/

 ProxyRequests     Off
 AllowEncodedSlashes NoDecode
</VirtualHost>

从浏览器访问 url 时http://apps1.example.com/svc-base只需重定向到主页http://apps1.example.com/ 我的代码有什么问题?需要建议,谢谢 :)

答案1

Alias /svc-base !

用法Alias指令是:
Alias [URL-path] file-path|directory-path

!据我所知,感叹号不是Alias指令(除非您实际上匹配名为的文件/目录/!)。

(也许您对这个事实感到困惑,在您不想反向代理子目录并排除 ProxyPass 匹配的路径的情况下,感叹号! 可以与指令结合使用。)ProxyPass

我认为您想要实现的目标并不需要任何Alias方法。


看来您想要ProxyPass /svc-base访问与根 URL 不同的后端服务器ProxyPass /

这是通过改变ProxyPass指令,因为 ProxyPass 规则是按照配置顺序检查的。第一个匹配的规则获胜。因此通常您应该首先从最长的 URL 开始对冲突的 ProxyPass 规则进行排序。

 ProxyPass /svc-base http://123.456.7.9:881/
 ProxyPassReverse /svc-base http://123.456.7.9:881/ 

 ProxyPass / http://123.456.7.8:880/
 ProxyPassReverse / http://123.456.7.8:880/

相关内容