2017-07-06 40 views
1

我使用Apache 2.4作为反向代理,并且只有在凭据传递到URL时,我需要重定向到URL。例如,这是我的网址:Apache 2.4重写与完整URL匹配的URL

https://user:[email protected]/site1.php?1

我用这个重写条件:

RewriteCond %{HTTP_HOST} ^user:[email protected]\.marcolino7\.myds\.me$ 

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

非常感谢 马尔科

回答

0

正如你正确地说,是不是主机头的一部分,所以将不匹配这样的。

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

%{LA-U:variable}可以用于其执行 内部(基于URL的)子请求来确定的 可变最终值查找aheads。这可以用于访问变量,以便在当前阶段不可用,但将在稍后的阶段中设置。

例如,根据从 每服务器环境(httpd.conf文件)内的REMOTE_USER变量,你必须使用重写 %{LA-U:REMOTE_USER} - 这个变量是由授权 阶段,这的URL转换后前来设置阶段(其间 mod_rewrite操作)。

在另一方面,因为mod_rewrite是通过API的一个修复程序阶段实现其每目录 上下文(.htaccess文件),因为 授权阶段此阶段之前来了,你才可以在这方面使用 %{REMOTE_USER}

像这样的事情在你的httpd.conf文件:

RewriteCond %{LA-U:REMOTE_USER} =user 

或者在.htaccess

RewriteCond %{REMOTE_USER} =user 
+0

您好,感谢的答案,但它不是我的情况。我只需要重写一次,当URL通过用户名和密码传递时,而不是当url刚被重写时。 –