我正在开发SaaS应用程序,在路线中我有以下代码
$subdomain = '';
$domain_parts = explode('.', Request::server('HTTP_HOST'));
if (count($domain_parts) == 3) {
$subdomain = $domain_parts[0];
if ($subdomain == 'www') {
$subdomain = '';
}
}
if (empty($subdomain)) {
Route::get('/', 'IndexController@showIntro');
} else {
Route::group(array('domain' => '{subdomain}.'.Config::get('app.domain'), 'before' => 'db.setup'), function() {
{
Route::get('/', array(
'as' => 'login',
'uses' => 'LoginController@showLoginForm'
));
Route::post('login', array(
'as' => 'performLogin',
'uses' => 'LoginController@performLogin'
));
Route::get('logout', array(
'as' => 'logout',
'uses' => 'LoginController@performLogout'
));
});
问题是如果子域存在,那么它将不会重定向到登录页面。如果我删除Route::group
中数组的内容
然后它会工作,但数组内容是必要的,我得到的错误是NotFoundHttpException
我知道有一个小错误但没有得到,所以任何解决此路由错误。
谢谢。
答案 0 :(得分:0)
此处的评估实际上没有必要:
$subdomain = '';
$domain_parts = explode('.', Request::server('HTTP_HOST'));
if (count($domain_parts) == 3) {
$subdomain = $domain_parts[0];
if ($subdomain == 'www') {
$subdomain = '';
}
}
if (empty($subdomain)) {
Route::get('/', 'IndexController@showIntro');
} else {
你可以摆脱这段代码,然后简单地说
Route::get('/', 'IndexController@showIntro');
在子域Route::group()
之后。
我这样做:
Route::group(array('domain' => '{account}.' . Config::get('database.environment_url') .'') , function()
{
// Subdomain-only activity here.
}
// If there is no subdomain, Laravel will go straight to this route first.
Route::get('/' , 'IndexController@showIntro');
希望这有帮助!
编辑::要添加到此 - 如您所知,WWW被laravel视为子域。如果您想为“www”子域执行特殊操作,可以在子域组中执行此操作。