2012-03-09 126 views
0

我一直在過去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']; ?> 

沒有人知道這裏的問題是什麼?該支持對我沒有幫助。我認爲服務器配置有問題。

回答

0

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