2014-11-05 110 views
4

如何将URL从www.myapp.co重定向到myapp.co?而且如果URL有其他参数,如www.myapp.co/other-parameter将被重定向到myapp.co/other-parameter,其中other-parameter可以是任何东西。对于这个noob问题抱歉,我还在使用Laravel一周。使用URL参数将www重定向到非Laravel的www

顺便说一句,我使用动态子域名,所以我只需要重定向www到非www而不是其他子域。

Route::group(array('domain' => 'myapp.co'), function() { 

    Route::get('/', function() { 
     return 'Hello! Welcome to main page...'; 
    }); 
    Route::get('/login', function() { 
     return 'Login'; 
    }); 
    Route::get('/signup', function() { 
     return 'Signup'; 
    }); 

}); 

Route::group(array('domain' => '{account}.myapp.co'), function() { 

    Route::get('/', function($account) { 

     if ($account == 'www') { 
      return Redirect::to('http://myapp.co'); 
     } 
     return $account; 
    }); 

}); 
+0

可能重复[重定向非www到www英寸htaccess](http://stackoverflow.com/questions/12050590/redirect-non-www-to-www-in-htaccess) – Bogdan 2014-11-05 09:59:06

回答

9

也许您可以在公用文件夹中使用.htaccess来执行重定向。

这里是一个:

<IfModule mod_rewrite.c> 
    RewriteEngine On 

    RewriteCond %{HTTP_HOST} !localhost 
    RewriteCond %{HTTP_HOST} !^(.+)\.(.+)\.(.+) 
    RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [L,R=301] 
</IfModule> 

Basicaly这里我测试,如果主机不是本地主机并发出重定向到www之前不是子域(形式abc.xyz.tldn)。 我在多个项目中使用这种代码,但没有测试过它。我希望它能开箱即用。

编辑: 另一种方式来做到这一点无需复杂的模式匹配的描述如下: Redirect non www to wwww in htaccess 但这种方法需要你硬编码的htaccess里面你的域名。 (可能会或可能不会根据您的设置有问题)

+0

谢谢,它的工作原理。但我有一个问题。当我尝试'test1.myapp.co'时,我被重定向到'www.test1.myapp.co',这是我不想要的。我只希望它成为'test1.myapp.co'。 – 2014-11-05 10:12:36

+0

顺便说一句,它适用于Firefox。也许我需要在Chrome中删除缓存。 – 2014-11-05 10:15:37

11

如果你真的想要把您的问题以编程我认为最好的办法是到下一个代码添加到您的filters.php:

App::before(function($request){ 
    //Remove the 'www.' from all domains 
    if (substr($request->header('host'), 0, 4) === 'www.') { 
     $request->headers->set('host', 'myapp.co'); 
     return Redirect::to($request->path()); 
    } 
}); 

基本上我只是创建一个过滤器来检查请求是否以'www。'开头。在这种情况下,将客户端重定向到没有“www”的相同路径。

+0

我不得不在代码中进行重定向,这非常完美! – Patrick 2014-12-17 02:33:58

-2

重定向WWW非WWW网址

今天,我们学习如何WWW网址重定向到非WWW网址

现在,这个网站开通两个www和非WWW

步骤,从WWW重定向到使用.htaccess文件非WWW网址

  1. 转到文件ZILA
  2. 选择您的网站
  3. 打开.htaccess文件
  4. 复制下面的代码到.htaccess文件

    RewriteEngine on 
    RewriteCond %{HTTP_HOST} ^www\.example\.com [NC] 
    RewriteRule ^(.*)$ http://example.com/$1 [L,R=301] 
    
  5. 与您的域名替换例如

  6. 贴吧。htaccess文件
  7. 检查住
1

http://stackoverflow.com/a/4958847/1078583 试试这个如果没有工作,那是因为你正在使用的nginx

# Force WWW: 
RewriteCond %{HTTP_HOST} !^$ 
RewriteCond %{HTTP_HOST} !^www\. [NC] 
RewriteCond %{HTTPS}s ^on(s)| 
RewriteRule^http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]