2015-06-08 88 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