2014-10-31 24 views
1

我試圖做的是如下:htaccess的 - 傳遞請求URI作爲參數

  1. 重定向用戶使用htaccess的另一個地址。
  2. 傳遞給定的URL作爲參數傳遞給新的URL

因此,當用戶瀏覽http://domainA.com/ 任何網頁,他應該被重定向到:http://domainB.com/?referer=http://domainA.com/

我一直沒有提交,是在重定向之前檢索用戶來自的完整URL。提前

RewriteRule ^(.*)$ http://domainB.com/?referer=%{HTTP_HOST}%{REQUEST_URI} 

感謝:

一個我試圖和東西慘敗!

編輯: 我試圖讓我的問題簡單,更復雜的問題往往得不到解答, 所以我會激化我的問題,雖然有一個很好的答案,原來

所以要更具體地說明我想實現的目標: 這兩個域都託管在同一主機上,並指向完全相同的文件。 所以domainA.com/file1.htmldomainB.com/file1.html將顯示相同的文件。

我希望domainA做的是將所有請求傳遞到名爲listener.php的文件。 所以,要DOMAINA所有請求應該像這樣:

  1. 用戶進入幕後http://domainA.com/file1.html
  2. 服務器的請求居然是:/listener.php?actualRequest= http://domainA.com/file1.html

我想這個功能在服務器端,這樣的網址將保持正常。

我去了2個域名,因爲我想避免重定向循環。

回答

0

您可以使用此規則:

RewriteCond %{HTTPS}s on(s)| 
RewriteCond %{HTTP_HOST} ^(?:www\.)?domainA\.com$ [NC] 
RewriteRule^http://domainB.com/?referer=http%1://%{HTTP_HOST}%{REQUEST_URI} [L,NE,R=302] 

這同時處理http://https://網址。


編輯:按照編輯的問題,你可以使用:

RewriteCond %{HTTPS}s on(s)| 
RewriteCond %{HTTP_HOST} ^(?:www\.)?domainA\.com$ [NC] 
RewriteRule !^listener\.php$ /listener.php?actualRequest=http%1://%{HTTP_HOST}%{REQUEST_URI} [L,QSA] 
+0

我試圖用這個代碼,由於某種原因,這是行不通的。你有自己測試過嗎? – Radicate 2014-11-01 16:13:45

+0

我不會在我的答案中發佈未經測試的代碼,當然這是經過測試和工作的代碼。對於哪個網址,它不起作用,這個.htaccess位於哪裏?有更多規則嗎? – anubhava 2014-11-01 20:12:23

+0

我明白了。那麼我試圖使用它時,domainA是服務器的IP地址(此時沒有域名),domainB是我的.com域名。該文件位於根文件夾中,正好位於網站的索引位置。沒有其他規則。它純粹是你的代碼。 – Radicate 2014-11-02 07:35:16