【问题标题】:Apache Redirect not working for meApache 重定向对我不起作用
【发布时间】:2018-04-30 04:31:17
【问题描述】:

我们遇到了一个问题,即某个软件想要打开一个网页到一个不再存在的服务器,而替换服务器使用不同的 URL 结构。

我的任务是为此实施解决方案,并且一直在研究 Apache 重定向。这是在使用 RHEL 附带的 Apache v2.4.6 的 RHEL 7.5 VM 上运行的。

到目前为止,我的配置如下:

重写引擎开启 RewriteRule "^/wp2/geoviewer-prod/wpc.jsp?latitude=(.*)&longitude=(.*)&scale=(.*)" "http://newserver/server/#/map/$1,$2, 19z" [B,PT,NE,R=301,L] 重写引擎关闭

在我看到的 Apache access_log 文件中:

192.168.249.30 - - [30/Apr/2018:12:12:07 +0800] "GET /wp2/geoviewer-prod/wpc.jsp?latitude=-2.2&longitude=4.4&scale=3000000 HTTP/1.1" 304 - " -" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36"

浏览器永远不会转到新服务器。

任何想法我做错了什么?

谢谢

已编辑:从“code”更改为“pre”标签,现在可以正确显示。

EDIT2:我已将 Apache 日志记录提高到 11,并且日志中没有提到“重写”。

【问题讨论】:

  • 你的正则表达式错误。问号需要转义,(.) 仅表示一个字符,因此它永远不会匹配 -2.2。可能会出现更多错误。
  • 抱歉,我使用的是 CODE 标签,配置显示不正确。现已修复。
  • 您的问号仍然需要转义。确保您的正则表达式正确的最佳方法是在regex101.com 之类的工具中对其进行测试,以在拒绝 apache 故障之前消除任何正则表达式问题。
  • 我避开了问号,但没有任何改变。

标签: apache redirect


【解决方案1】:

在 VirtualHost 上下文中,RewriteRule pattern 将与主机名和端口之后、查询字符串之前 的 URL 部分进行匹配。
如果您希望匹配查询字符串,请使用 RewriteCond%{QUERY_STRING} 变量。试试这样的:

RewriteEngine on
RewriteCond %{QUERY_STRING} latitude=(.*)&longitude=(.*)&scale=(.*)
RewriteRule ^/wp2/geoviewer-prod/wpc.jsp http://newserver/server/#/map/%1,%2,19z [B,PT,NE,R=301,L]
#RewriteEngine off

【讨论】:

  • 谢谢。我已经尝试过了,但仍然是相同的行为。我应该注意到我必须创建 /var/www/html//wp2/geoviewer-prod/wpc.jsp 来阻止 404 错误。我想知道这是否至少是我的问题的一部分......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-01-28
  • 1970-01-01
  • 2015-02-22
  • 2016-06-23
  • 2016-07-15
  • 2019-04-04
  • 1970-01-01
相关资源
最近更新 更多