我有一个laravel应用程序可以协调多个域。
public function showWelcome()
{
switch ($_SERVER['SERVER_NAME'])
{
case 'site1':
return View::make('site1.public.index');
break;
case 'site2':
return View::make('site2.public.index');
break;
case 'site3':
return View::make('site3.public.index');
break;
}
}
当我输入site1.com时 - 一切正常,但是当我输入www.site1.com时 - 只是白屏。 其他域名存在同样的问题。
我尝试用.htaccess修复它,如果我键入第一个域(有或没有www) - 只是工作。如果我输入其他域名site2.com或www.site2.com例如 - 重定向到site1.com
我也试过这个:
if (substr($_SERVER['SERVER_NAME'], 0, 4) == 'www.') {
$domain = substr($_SERVER['SERVER_NAME'], 4);
} else {
$domain = $_SERVER['SERVER_NAME'];
}
但不行。 所有域都转到showWelcome()方法。
结果必须是:
site1.com或www.site1.com - >案例'site1'
site2.com或www.site2.com - >案例'site2'
site3.com或www.site3.com - >案例'site3'
目前只在工作:
site1.com - >案例'site1'
site2.com - >案例'site2'
site3.com - >案例'site3'
请帮忙。
答案 0 :(得分:3)
你应该考虑使用"域"在laravel中的路由文件中路由组,这对域有很大的支持。 routes.php文件示例:
$site1Routes = function() {
Route::get('/', function() { return View::make('site1.public.index'); });
}
$site2Routes = function() {
Route::get('/', function() { return View::make('site2.public.index'); });
}
$site3Routes = function() {
Route::get('/', function() { return View::make('site3.public.index'); });
}
Route::group(array('domain' => 'site1.com'), $site1Routes);
Route::group(array('domain' => 'www.site1.com'), $site1Routes);
Route::group(array('domain' => 'site2.com'), $site2Routes);
Route::group(array('domain' => 'www.site2.com'), $site2Routes);
Route::group(array('domain' => 'site3.com'), $site3Routes);
Route::group(array('domain' => 'www.site3.com'), $site3Routes);
对当前脚本进行快速修复,可以简单地将www.
替换为EMPTY
,这样就可以将其从服务器名字符串中排除。
public function showWelcome()
{
$domain = $_SERVER['SERVER_NAME'];
$domain = str_replace('www.','', $domain);
switch ($domain)
{
case 'site1':
return View::make('site1.public.index');
break;
case 'site2':
return View::make('site2.public.index');
break;
case 'site3':
return View::make('site3.public.index');
break;
}
}