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

Posted

技术标签:

【中文标题】使用 URL 参数将 www 重定向到 Laravel 中的非 www【英文标题】:Redirect www to non-www in Laravel with URL parameters 【发布时间】:2015-01-01 11:06:55 【问题描述】:

如何将 URL 从 www.myapp.co 重定向到 myapp.co ?此外,如果 URL 有其他参数,如 www.myapp.co/other-parameter 将被重定向到 myapp.co/other-parameter 其中 other-parameter 可以是任何东西。抱歉这个菜鸟问题,我仍然使用 Laravel 1 周。

顺便说一句,我使用的是动态子域,所以我只需要将 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;
    );

);

【问题讨论】:

Redirect non-www to www in .htaccess 的可能重复项 【参考方案1】:

.htaccess

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

【讨论】:

【参考方案2】:

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

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

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

【讨论】:

【参考方案3】:

从http://***.com/a/4958847/1078583试试这个 如果这不起作用,那是因为您使用的是nginx

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

【讨论】:

【参考方案4】:

将 www 重定向到非 www url

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

现在这个网站同时开放 www 和非 www

使用 .htaccess 文件从 www 重定向到非 www url 的步骤

    转到文件 zila 选择您的网站 打开 .htaccess 文件

    将以下代码复制到 .htaccess 文件中

    RewriteEngine on
    RewriteCond %HTTP_HOST ^www\.example\.com [NC]
    RewriteRule ^(.*)$ http://example.com/$1 [L,R=301]
    

    将示例替换为您的域名

    将其粘贴到 .htaccess 文件中 实时查看

【讨论】:

【参考方案5】:

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

【讨论】:

我必须在代码中进行重定向,这非常完美! 如果有人遇到这个问题,当我使用上面的代码时,我遇到了“Class App\Http\Controllers\Redirect not found”问题,我解决了在顶部提到“使用重定向”的问题【参考方案6】:

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

这是一个:

<IfModule mod_rewrite.c>
    RewriteEngine On

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

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

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

【讨论】:

谢谢,它有效。但我有一个问题。当我尝试test1.myapp.co 时,我被重定向到我不想要的www.test1.myapp.co。我只希望它变成test1.myapp.co 顺便说一句,它适用于 Firefox。也许我需要删除 chrome 中的缓存。

以上是关于使用 URL 参数将 www 重定向到 Laravel 中的非 www的主要内容,如果未能解决你的问题,请参考以下文章

基于 URL/查询参数的重定向

将 404 重定向到类似的 url

如何从 IIS 重定向带有参数的 URL

301 从带有 GET 参数的 URL 重定向到主页

如何在nginx中使用参数重定向url

使用 .htaccess 将 www URL 重定向到 https 的非 www