apache - Apache HTTP 服务器重定向到端口 8085 IF url 包含“演示” ELSE 重定向到端口 8080
问题描述
我有 2 个应用程序在端口 8080 和 8085 上运行。两者都有不同的 URL 查询/路径,端口 8085 上的应用程序在其所有 URL 查询/路径上都有关键字demo,而其他没有。所以它作为一个唯一的标识符
我可以对/etc/httpd/conf/httpd.conf
文件进行任何更改,以便如果服务器将demo标识为关键字,则请求将到达端口 8085 上的应用程序,否则请求将到达端口 8080 上的端口应用程序?
如果有办法,请提供进入 httpd.conf 文件的示例配置
编辑1:
在尝试了以下前两个答案后,我无法做到这一点。我不知道 ProxyPass 和 ProxyPassReverse 是否不允许实现这一点。我尝试评论它们,将它们添加到 VirtualHost 等中。但没有帮助。
这是我们期望的流程:用户将点击 URL(不提及端口)https://example.com/demo
,这将被路由到8085
其他路由到的端口上的应用程序8080
可能正在查看我的完整 httpd.conf 可能会有所帮助
链接到我的 httpd.conf - https://gofile.io/d/tWIHvX
解决方案
如果查询字符串包含单词“demo”,则重写条件:
<VirtualHost *:8080>
<Directory /var/www/example/>
Allow From All
RewriteEngine On
RewriteCond %{SERVER_PORT} !^8085$
RewriteCond %{QUERY_STRING} (demo)
RewriteRule ^Demo http://%{HTTP_HOST}:%{SERVER_PORT}/$1 [L,R]
</Directory>
</VirtualHost>
如果查询字符串不包含单词“demo”,则重写条件:
<VirtualHost *:8085>
<Directory /var/www/example/>
Allow From All
RewriteEngine On
RewriteCond %{SERVER_PORT} !^8080$
RewriteCond %{QUERY_STRING} (!demo)
RewriteRule ^Demo http://%{HTTP_HOST}:%{SERVER_PORT}/$1 [L,R]
</Directory>
</VirtualHost>
如果 SERVER_PORT 不起作用,请直接尝试如下端口:
RewriteRule ^Demo http://%{HTTP_HOST}:8085/$1 [L,R]
推荐阅读
- angular - 添加自定义标题会覆盖旧标题条目。如何在 Angular 8 中保留旧的标题条目?
- php - 我正在尝试在 php 中创建一个搜索栏来搜索我的 csv 文件。但是,我无法检索任何内容
- angular - Azure 身份验证 MSAL 1.3 - Angular SPA - 登录后,应用程序会一直加载并且不会停止
- node.js - 使用 mongoDB 在对象数组中添加数据
- git - 无法从 Master 推送/拉取文件夹到 GitHub
- arrays - 如何在 Google 表格中反转数组?
- c++ - 为什么我不能使用“str [0]”来解码 C++ 中的枚举?
- algorithm - 将简单的单色绘图图像转换为二维文本数组
- perl - 如何在 perl 中创建索引变量?
- teamcity - 在 TeamCity 构建步骤中获取构建作业 URL