【问题标题】:Why does mod_rewrite strip the port number from my request url?为什么 mod_rewrite 会从我的请求 url 中删除端口号?
【发布时间】:2013-09-22 05:19:37
【问题描述】:

我正在使用带有 mod_rewrite 的 Apache mod_proxy 来屏蔽查询字符串中的一些凭据。日志显示重写规则工作正常,但端口号 (:9000) 被剥离,导致代理拒绝 URL。除了安全讲座和与手头实际问题无关的任何其他内容,谁能告诉我解决方案可能是什么?

基本示例:

RewriteCond %{QUERY_STRING} ^(.*)userid=fakepass(.*)
RewriteRule ^(.*)$ $1?%1userid=realpass%2

原网址:https://domain.com:9000/somedirectory/request.jsp?userid=theuser&password=fakepass

目标网址:: https://domain.com:9000/somedirectory/request.jsp?userid=theuser&password=realpass

mod_rewrite 后的实际结果: https://domain.com/somedirectory/request.jsp?userid=theuser&password=realpass

【问题讨论】:

  • 这是您的完整 .htaccess 吗?在此处发布您的完整 .htaccess。
  • 其实是在虚拟主机上工作,但是在这里她吹了。对SO来说太长了。这是一个粘贴箱链接。 pastebin.com/0ctSEDjB
  • 你有没有整理过这个问题?我遇到了同样的事情......
  • 我做到了。通过服务器(本地或远程)运行页面时,会自动添加前缀。此处设置非常简单的本地服务器:github.com/indexzero/http-server
  • 我遇到了同样的问题 - 文档说在相对 url 的情况下端口将成为 prepender - 为什么它不是,我不知道;/另一方面,示例看起来像 http://thishost[:thisport]这可能表明 [thisport] 是可选的 0 - 但如果是这样,那么依赖关系是什么?

标签: apache .htaccess mod-rewrite url-rewriting mod-proxy


【解决方案1】:

在您的规则中指定端口。将您的 .htaccess 更改为:

RewriteCond %{QUERY_STRING} ^(.*)userid=fakepass(.*)
RewriteRule ^(.*)$ https://%{HTTP_HOST}:9000/somedirectory/request.jsp?userid=theuser&password=realpass

【讨论】:

    猜你喜欢
    • 2014-07-18
    • 2011-07-04
    • 2019-08-26
    • 2015-08-17
    • 2016-10-23
    • 1970-01-01
    • 2017-01-01
    • 2016-02-06
    相关资源
    最近更新 更多