2017-07-06 56 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剛被重寫時。 –