【问题标题】:Apache 2.4 Rewrite URL matching full URLApache 2.4 重写 URL 匹配完整 URL
【发布时间】:2017-12-10 17:35:09
【问题描述】:

我使用 Apache 2.4 作为反向代理,并且我需要重定向到一个 URL,只有当凭据被传递到 URL 时。例如,这是我的网址:

https://user:password@myserver.mydomain.com/site1.php?1

我使用这个重写条件:

RewriteCond %{HTTP_HOST} ^user:password@ohab\.marcolino7\.myds\.me$

但它不匹配,我想是因为 HTTP_HOST 不包含身份验证数据。 有没有办法将 URL 与身份验证数据匹配,然后我可以重定向?

非常感谢 马可

【问题讨论】:

    标签: apache mod-rewrite


    【解决方案1】:

    正如您所说的那样,这不是主机标头的一部分,因此不会像那样匹配。

    您可以使用REMOTE_USER 变量来实现。你如何做取决于你的规则的上下文。请参阅the documentation,特别是下面的引用。

    %{LA-U:variable} 可用于执行前瞻 确定最终值的内部(基于 URL)子请求 变量。这可用于访问变量以进行重写,即 目前阶段不可用,稍后会设置。

    例如,根据REMOTE_USER 变量从 在每个服务器上下文(httpd.conf 文件)中,您必须使用 %{LA-U:REMOTE_USER} - 此变量由授权设置 阶段,在 URL 翻译阶段之后(在此期间 mod_rewrite 操作)。

    另一方面,因为 mod_rewrite 实现了它的 per-directory 上下文(.htaccess 文件)通过 API 的 Fixup 阶段,因为 授权阶段在这个阶段之前,你可以使用 %{REMOTE_USER} 在这种情况下。

    httpd.conf 文件中的类似内容:

    RewriteCond %{LA-U:REMOTE_USER} =user
    

    或者在.htaccess:

    RewriteCond %{REMOTE_USER} =user
    

    【讨论】:

    • 您好,感谢您的回答,但这不是我的情况。我只需要重写一次,当使用用户名和密码传递 URL 时,而不是在刚刚重写 url 时。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-07
    • 1970-01-01
    • 1970-01-01
    • 2017-07-09
    • 1970-01-01
    • 2016-03-25
    • 1970-01-01
    相关资源
    最近更新 更多