重写用户定义域的URL

时间:2009-08-11 14:47:48

标签: .htaccess mod-rewrite

我不完全确定这是否可行并尝试搜索,但无法找到目前情况的确切答案。

我正在构建一项服务,该服务应允许用户将自己的域指向该服务。 (他们需要将A记录指向我的服务器ip)

我可以使用apache中的catch all来捕获域。所以我在httpd.conf中为这个catch创建了一个Vhost记录。因此,apache中所有未定义的主机名都指向某个目录。

现在我想将此域作为参数传递给我的服务。那么有可能将this.randomdomain.com指向www.mywebserviceurl.com/domain/catch/this.randomdomain.com并使用.htaccess

地址栏应保留网址this.randomdomain.com

修改

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

以上是重定向但firefox出现错误“页面没有正确重定向 - Firefox检测到服务器正在以永远不会完成的方式重定向此地址的请求。” 地址正在改变,我不想要。

谢谢!

3 个答案:

答案 0 :(得分: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]

答案 1 :(得分:0)

见这里:http://www.addedbytes.com/apache/mod_rewrite-cheat-sheet/

指令%{HTTP_REFERER}应该完成你所追求的目标。

答案 2 :(得分:0)

如果您使用Gumbo的答案,但更改大括号中的参数,则可以静默重定向。将[R=301]更改为[L],这意味着它是将要执行的最后一条规则。

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

编辑:在看到Gumbo的答案后,您还需要启用mod_proxy并添加P标志。