2009-08-11 82 views
0

我不完全確定這是否可能並嘗試搜索,但無法找到我目前情況的確切答案。爲用戶定義的域重寫URL

我正在構建一項服務,該服務應允許用戶將自己的域指向該服務。 (他們需要指向我的服務器ip的A記錄)

我能夠在apache中使用catch來捕獲域。所以我在httpd.conf中爲這個catch做了一個Vhost記錄。所以Apache中所有未定義的主機名都指向某個目錄。

現在我想將這個域作爲參數傳遞給我的服務。那麼,有可能指向this.randomdomain.com到www.mywebserviceurl.com/domain/catch/this.randomdomain.com用的.htaccess

地址欄應該保持URL this.randomdomain.com

編輯:

RewriteEngine On 
RewriteRule ^(.*)$ http://example.com/blogs/string/$1 [R=301] 

上述被重定向但Firefox trows的錯誤「該頁沒有正確重定向 - 火狐已檢測到服務器重定向此地址的請求的方式,將永遠不會完成。 「 而地址正在改變,我不想要。

謝謝!

回答

1

排除在規則域:

RewriteCond %{HTTP_HOST} !=example.com 
RewriteRule ^(.*)$ http://example.com/blogs/string/$1 [R=301] 

如果你想太多域:

RewriteCond %{HTTP_HOST} !=example.com 
RewriteRule ^(.*)$ http://example.com/blogs/string/%{HTTP_HOST}/$1 [R=301] 
+0

謝謝,這是工作,但我怎麼能使這個隱形的用戶? – SePP 2009-08-11 15:50:22

+0

你可能會使用代理(需要mod_proxy)來做到這一點。只需添加'P'標誌。 – Gumbo 2009-08-11 16:03:08

+0

如果我將[R = 301]更改爲[P],它會中斷重定向,我會找到404頁面未找到。 – SePP 2009-08-11 16:08:34

0

如果你用濃湯的答案,但改變的參數在括號,你可以靜靜地重定向。將[R=301]更改爲[L],這意味着它是將要執行的最後一條規則。

RewriteCond %{HTTP_HOST} !=example.com 
RewriteRule ^(.*)$ http://example.com/blogs/string/$1 [L,P] 

編輯:在看到Gumbo的回答後,您還需要啓用mod_proxy並添加P標誌。

+0

我已將它更改爲[L]重定向一直在工作,但他並沒有默默執行。它改變地址欄。 – SePP 2009-08-11 16:09:11

+0

Gumbo的更新答案應該可以工作。我編輯了我的回覆以匹配他的。 – 2009-08-11 17:09:24