2011-04-26 73 views
0

我有理解htaccess的重定向如何工作的問題:htaccess的子域腳本重定向

我可以做一個背景重定向,從而使用戶看到[subdomain].mydomain.com/?p1=v1...,但服務器沒有實際的重定向,只有服務器端提供mydomain.com/?sid=[subdomain]&p1=v1...

這是我迄今爲止,它不工作:

RewriteEngine On 
RewriteBase/
RewriteCond %{HTTP_HOST} ^([^./]+)\.localhost\.com/(.+) [NC] 
RewriteRule (.+) localhost.com/index.php?supplier=$1&$2 [L] 

我不會改變任何東西。

編輯

我得到了這個工作中間:

Options +FollowSymLinks 
RewriteEngine On 
RewriteBase/
RewriteCond %{HTTP_HOST} ^([^./]+)\.localhost\.com$ [NC] 
RewriteRule /(.+)$ http://localhost\.com/eshop/?supplier=%1 [QSA,P] 

現在我得到一個不錯的禁止警告,如果刪除標誌P,它會重新定向,所以URL顯示http://localhost.com/eshop/?supplier=[subdomain]&p1=v1...喜歡它應該,但用戶仍然必須看到http://[subdomain].localhost.com/eshop/?p1=v1...,現在如何刪除該禁止部分...

(注意我的網站實際上是在下的文件夾www,但eshop部分將消失)。

EDIT 2

它的作品,從而clmarquart說我需要mod_proxy的。在WAMP上,您必須通過單擊托盤圖標 - > Apache-> Apache模塊啓用它,並啓用proxy_module和proxy_http_module,無論它們是什麼。

+2

爲了使用'[P]'標誌,你需要啓用'mod_proxy'。否則,你有什麼應該工作。 – clmarquart 2011-04-26 13:18:31

+0

那是什麼?我如何檢查WAMP? – Solenoid 2011-04-26 13:22:23

+1

模塊在'conf/httpd.conf'文件中啓用。您需要確保您的託管服務提供商也啓用了它。啓用apache模塊應顯示在phpinfo頁面以及'<?php phpinfo(); ?>' – clmarquart 2011-04-26 13:27:49

回答

0

使用「P」標誌強制使用內部代理。使用代理模塊時,RewriteURL目標必須是完整的URL。從RewriteCond表達式中使用「%1」到「%9」作爲捕獲的數據,從RewriteRule表達式中捕獲的數據使用「$ 1」到「$ 9」。

下應該更好地工作(儘管未測試)

RewriteEngine On 
RewriteBase/
RewriteCond %{HTTP_HOST} ^([^./]+)\.localhost\.com$ [NC] 
RewriteRule (.+) http://localhost.com/index.php?supplier=%1&$1 [L,P] 
+0

我想用$ _GET獲得[subdomain]部分,是否有可能?既然它在內部重定向,我會認爲是......你給我的東西不行,不過我還在砸我的鍵盤,看看我是否奇蹟般地讓它工作。目前我收到了一個錯誤的鏈接錯誤。還有什麼在這裏(。+)的RewriteRule? – Solenoid 2011-04-26 12:36:11

+0

%1會給你子域名。 $ 1會給你RewriteRule的(。+)捕獲 – qbert220 2011-04-26 14:35:09