Apache 2.4重写匹配完整URL的URL

时间:2017-07-06 15:43:19

标签: apache mod-rewrite

我使用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与身份验证数据,然后我可以重定向?

非常感谢 马可

1 个答案:

答案 0 :(得分:0)

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

您可以使用REMOTE_USER变量执行此操作。您如何做到这取决于您的规则的上下文。请参阅the documentation,特别是下面的引用。

  

%{LA-U:variable}可用于执行前瞻   内部(基于URL)子请求,以确定最终值   可变。这可以用来访问变量进行重写   目前阶段尚未提供,但将在稍后阶段确定。

     

例如,根据REMOTE_USER变量重写   在必须使用的每服务器上下文(httpd.conf文件)中   %{LA-U:REMOTE_USER} - 此变量由授权设置    URL转换阶段之后的阶段(在此期间)   mod_rewrite运行)。

     

另一方面,因为mod_rewrite实现了每个目录   上下文(.htaccess文件)通过API的Fixup阶段和因为   授权阶段在此阶段之前,您可以使用   在这种情况下%{REMOTE_USER}

httpd.conf文件中包含以下内容:

RewriteCond %{LA-U:REMOTE_USER} =user

.htaccess

RewriteCond %{REMOTE_USER} =user