使用 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的主要内容,如果未能解决你的问题,请参考以下文章