hostgator:通配符子域映射到URL

问题描述:

我一直在过去3个小时在hostgator共享主机服务器上解决了这个问题。这是最简单的问题。hostgator:通配符子域映射到URL

这是我希望发生的映射: subdomain.domain.com - > www.domain.com/test.php?user=subdomain

但出于某种原因,每当我进入“subdomain.domain .com“,重定向不会发生,甚至URL在我的浏览器中也不会改变。我看到加载页面上列出的test.php文件(因为我在服务器上的唯一文件是.htaccess和test.php)。

这是.htacess代码

 <IfModule mod_rewrite.c> 
      RewriteEngine On 
      RewriteBase/

      <IfModule mod_proxy.c> 
        RewriteCond %{HTTP_HOST} !^www. [NC] 
        RewriteCond %{HTTP_HOST} ^([a-z0-9]+).domain.com(.*)$ [NC] 
        RewriteRule ^(.*)$ http://www.domain.com/test.php?user=$1$2 [P,L] 
      </IfModule> 

      <IfModule !mod_proxy.c> 
        RewriteCond %{HTTP_HOST} !^www. [NC] 
        RewriteCond %{HTTP_HOST} ^([a-z0-9]+).domain.com(.*)$ [NC] 
        RewriteRule ^(.*)$ http://www.domain.com/test.php?user=$1$2 [R=301,L] 
      </IfModule> 
    </IfModule> 

,这是test.php的代码

<?php echo $_GET['user']; ?> 

没有人知道这里的问题是什么?该支持对我没有帮助。我认为服务器配置有问题。

RewriteCond反向引用使用百分比而不是美元符号! %1不是$ 1。

RewriteCond %{HTTP_HOST} !^www. [NC] 
RewriteCond %{HTTP_HOST} ^([a-z0-9]+).domain.com(.*)$ [NC] 
         ^%1    ^%2 
RewriteRule ^(.*)$ http://www.domain.com/test.php?user=$1$2 [R=301,L] 
      ^$1          ^^^^ oops 

$1表示从左边的正则表达式中拉出一些东西; %1表示将其从RewriteCond中拉出。假设重写者不会因为$2是一个悬而未决的反向引用而窒息,您可能会将整个比赛作为用户部分。

+0

我只是试过这个,但仍然看到同样的问题。我在服务器配置拒绝的错误日志客户端中看到了这一点:/home/user/public_html/.htaccess – santosh 2012-03-09 11:01:13

+0

如果问题是“它不起作用”,那么这也是同样的问题。它是否以完全相同的方式失败(这些更改绝对没有区别?) – Kaz 2012-03-09 22:29:35

+0

我发现如果在请求domain.com url时没有index.php文件,这是常见的服务器错误。与您的建议我得到它的工作。谢谢。 – santosh 2012-03-10 02:43:09