2015-06-08 83 views
2

使用Laravel我正在生成一個名爲webpage的子目錄的php頁面。我想讓用戶使用子域來訪問頁面。例如,我已將whoami.php文件生成到webpage目錄中。如果有人試圖訪問whoami.domain.com,他可以看到whoami.php。我在webpage裏面有一個index.php,它可以提取別名並顯示文件。我認爲我需要的是將子域傳遞給index.php文件而不用重定向。我寫htaccess如下將子域指向子目錄

<IfModule mod_rewrite.c> 
    <IfModule mod_negotiation.c> 
     Options -MultiViews 
    </IfModule> 

    RewriteEngine On 

    # Redirect Trailing Slashes... 
    RewriteRule ^(.*)/$ /$1 [L,R=301] 

    # Handle Front Controller... 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule^index.php [L] 

    #sub domain custom part 
     RewriteCond %{HTTPS} off 
     RewriteCond %{HTTP_HOST} ^(.*)\.domain\.com 
     RewriteRule ^(.*)$ http://domain.com/webpage/%1/$1 [L,NC,QSA] 
</IfModule> 

但我重定向到http://domain.com/webpage/whoami

我試圖讓我的要求清楚並粘貼我所嘗試的。你能幫我找出一個辦法嗎?

編輯1 基於@ Starkeen的答案,我現在想在一個重定向循環(http://whoami.domain.com/webpage/whoami/webpage/whoami/......)下面的代碼。

<IfModule mod_rewrite.c> 
    <IfModule mod_negotiation.c> 
     Options -MultiViews 
    </IfModule> 

    RewriteEngine On 

     #sub domain 
     RewriteCond %{HTTPS} off 
     RewriteCond %{HTTP_HOST} ^(.*)\.domain\.com$ 
     RewriteRule ^(.*)$ /webpage/%1/$1 [L,NC,R] 

    # Redirect Trailing Slashes... 
    RewriteRule ^(.*)/$ /$1 [L,R=301] 

    # Handle Front Controller... 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule^index.php [L] 

</IfModule> 

回答

0

我得到了每一個簡單的解決方案。當我使用Laravel並且已經使用index.php作爲引導時,我在那裏編寫了一些PHP代碼來實現我的目標。如果需要,你們可以使用。如果我的解決方案不夠好,請告訴我。由於

我的解決方案

$link = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"; 
$link = str_replace(array('http://', 'https://', 'www.'), '', $link); 

$splitted = explode(".", $link); 

if($splitted[0] != 'domain'){ 
    $file_name = $splitted[0].'.php'; 
    $file_loc = 'webpage/'.$file_name; 

    if(file_exists($file_loc)) { 
     include($file_loc); 
    } else { 
     header('Location: http://domain.com/not-found'); 
    } 

    die(); 
} 
1

重定向子域名到子文件夾,你可能需要把下面右側的「RewriteEngine敘述在」行之後:

RewriteCond %{HTTP_HOST} ^(sub)\.domain\.com$ 
RewriteRule ^(.*)$ /webpage/%1/$1 [NC,R,L] 
+0

我的現在想你的解決方案在一個重定向循環。我用代碼更新了我所做的問題。你能檢查一下嗎? 謝謝 – IFightCode