Laravel中的子域名

时间:2014-06-04 11:25:46

标签: php laravel laravel-4 routing

子域名存在问题:(

在路线中:

Route::group(['domain' => 'www.app.me'], function(){
    Route::get('/', 'SiteController@index');
    Route::get('/{uri}', 'ShortnerController@redirect');
});
Route::group(['domain' => 'app.me'], function(){
    Route::get('/', 'SiteController@index');
    Route::get('/{uri}', 'ShortnerController@redirect');
});
Route::group(['domain' => 'platform.app.me'], function(){
    Route::get('/', 'PageController@index')->before('auth'); 
});
Route::group(array('domain'=>'agent.app.me'), function(){
Route::get('/', 'AgentController@index')->before('auth');
});

当我去app.me或www.app.me时,它会显示SiteController @ index 如果我去agent.app.me,它会显示AgentController @ index

但问题是,如果我转到platform.app.me,它会重定向到app.me

如何解决这个问题?

在cPanel中,托管重定向如下:

Subdomains.Root Domain    Document Root    Redirection
agent.app.me              /public_html     not redirected
platform.app.me           /public_html     not redirected

1 个答案:

答案 0 :(得分:3)

尝试更改订单。第一个匹配的路线将始终是使用的路线。此外,如果app.me只是使用与www。相同的路线,为什么不使用htaccess强制www。并维持一个较少的路线组?

所以,routes.php:

Route::group(['domain' => 'platform.app.me'], function(){
    Route::get('/', 'PageController@index')->before('auth'); 
});

Route::group(['domain'=>'agent.app.me'], function(){
    Route::get('/', 'AgentController@index')->before('auth');
});

Route::group(['domain' => 'www.app.me'], function(){
    Route::get('/', 'SiteController@index');
    Route::get('/{uri}', 'ShortnerController@redirect');
});

请注意,我在array()路由组中将[]的使用更改为agent.app.me,以确保您将两者混合使用时保持一致。

和.htaccess:

<IfModule mod_rewrite.c>
    Options -MultiViews
    RewriteEngine On

    # Enforce www where not using www or a valid sub domain or tld
    RewriteCond %{HTTP_HOST} !^(www|agent|platform)\.app\.(me|dev)$ [NC]
    RewriteRule ^(.*)$ http://www.app.me/$1 [L,R=301]

    # Redirect Trailing Slashes...
    RewriteRule ^(.*)/$ /$1 [L,R=301]

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>