2017-03-14 53 views
1

我在htaccess文件有如下規則:不能找到協議變量阿帕奇重寫規則

RewriteRule ^(.*)$ https://example.com/?http://%{HTTP_HOST}%{REQUEST_URI}?%{QUERY_STRING} [NE,R=302,L] 

但我想重定向基於所使用的協議(HTTP或HTTPS)的用戶。我嘗試這樣做:

RewriteRule ^(.*)$ https://example.com/?%{SERVER_PROTOCOL}://%{HTTP_HOST}%{REQUEST_URI}?%{QUERY_STRING} [NE,R=302,L] 

但用戶被重定向到「https://example.com/?HTTP/1.1://example.com/anything?anything

我不想使用的RewriteCond對於這樣一個簡單的任務,在那裏,我可以使用這方面的任何變化,我的意思是,那返回http或https?我在這裏檢查了http://httpd.apache.org/docs/current/mod/mod_rewrite.html,但我不確定是否有一個。

+2

你的意思是%{REQUEST_SCHEME}? – starkeen

+0

YEAP :)請發表一個答案我會批准,謝謝你! – Samul

回答

2

因爲我要求用戶@starkeen發表他的評論作爲答案,他沒有發佈它,我在這裏發佈它。爲了捕獲使用的協議的HTTP或HTTPS部分,您可以使用%{REQUEST_SCHEME}。

但是我不建議使用它,因爲我嘗試過它,它有點兒bug,在某些情況下甚至使用HTTPS它會使用HTTP,所以你應該使用其他的在線選擇。