dpde7365
dpde7365
2014-06-04 11:25

Laravel中的子域名

已采纳

Having problem with subdomains :(

In Routes:

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');
});

When I go to app.me or www.app.me it shows the SiteController@index If I go to agent.app.me it shows AgentController@index

But the problem is if I go to platform.app.me it redirects to app.me

How to solve this?

In cPanel a managed redirections like this:

Subdomains.Root Domain    Document Root    Redirection
agent.app.me              /public_html     not redirected
platform.app.me           /public_html     not redirected
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

1条回答

  • dp0518 dp0518 7年前

    Try changing the order. The first matched route will always be the one used. Also, if app.me is just going to use the same routes as www., why not use htaccess to force www. and have one less route group to maintain?

    So, 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');
    });
    

    Notice that I changed your use of array() to [] in the agent.app.me route group for consistency as you were mixing the two.

    And .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>
    
    点赞 评论 复制链接分享