繁体   English   中英

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

[英]Redirect www to non-www in Laravel with URL parameters

如何将 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;
    });

});

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

也许您可以使用 public 文件夹中的 .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 之前测试主机是否不是本地主机而不是子域(形式 abc.xyz.tldn)。 我在多个项目中使用这种代码,但尚未对其进行测试。 我希望它能开箱即用。

编辑:这里描述了另一种无需复杂模式匹配的方法: 在 htaccess中将非 www 重定向到 wwww但是此解决方案要求您在 htaccess中硬编码您的域名。 (可能有问题也可能没有问题,具体取决于您的设置)

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

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

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

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]

.htaccess

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

将 www 重定向到非 www 网址

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

现在这个网站对 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. 实时查看

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM