使用URL参数将www重定向到Laravel中的非www

时间:2014-11-05 09:56:20

标签: php .htaccess redirect laravel-4 laravel-routing

如何将网址从www.myapp.co重定向到myapp.co?此外,如果网址中包含www.myapp.co/other-parameter等其他参数,则会将其重定向到myapp.co/other-parameter,其中other-parameter可以是任何内容。对不起这个noob问题,我还在使用Laravel一周。

顺便说一句,我正在使用动态子域名,所以我只需要将重定向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;
    });

});

6 个答案:

答案 0 :(得分:12)

如果您真的想以编程方式处理问题我认为最好的解决方案是将下一个代码添加到您的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。'的相同路径。

答案 1 :(得分: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>

基本上我在这里测试主机是不是localhost而不是子域(形式为abc.xyz.tldn),然后再发送重定向到www。 我在多个项目中使用这种代码但是没有对它进行过测试。我希望它可以开箱即用。

编辑: 这里描述了另一种没有复杂模式匹配的方法: Redirect non www to wwww in htaccess 但是此解决方案要求您在htaccess中对您的域名进行硬编码。 (根据您的设置,可能是也可能不是问题)

答案 2 :(得分:2)

将以下代码添加到.htaccess文件中:

RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]

RewriteRule ^(.*)$ https://%1/$1 [R=301,L]

答案 3 :(得分: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]

答案 4 :(得分:0)

.htaccess

 RewriteEngine On
 RewriteCond %{HTTP_HOST} ^www.url\.com$ [NC]
 RewriteRule ^(.*)$ https://url.com/$1 [R=301,L]

答案 5 :(得分:-3)

将www重定向到非www网址

今天我们将学习如何将www网址重定向到非www网址

现在这个网站开通了www和非www

使用.htaccess文件从www重定向到非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. 现场检查