2009-08-11 26 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