【问题标题】:Laravel Subdomain Routing in a Subdirectory子目录中的 Laravel 子域路由
【发布时间】:2014-08-03 22:11:15
【问题描述】:

我在本地主机的子目录中安装了 Laravel 4.2。所以,我的 URL 类似于 http://account.localhost/projectName

一切正常,直到我尝试使用link_to_route()...而不是链接到例如http://jdoe.localhost/projectName/post/some-slug,而是链接到http://jdoe.localhost/post/some-slug

我感觉这与我的路线有关...

Route::group(['domain' => '{subdomain}.localhost'], function () {
    Route::get('/', ['as' => 'index', 'uses' => 'AccountsController@index']);
    Route::get('/posts/{slug}', ['as' => 'account.posts', 'uses' => 'PostsController@index']);
});

Route::get('/', ['as' => 'home', 'uses' => 'HomeController@showHome']);

如果我将域更改为{subdomain}.localhost/projectName,它将不再识别子域,只是将我发送到主页...


我看到 4.2 实现了一个方法forceRootUrl(),但不知道如何使用它。所以,我最终选择了这个:

/**
 * Handle routes to dynamic subdomains
 */

Route::group(['domain' => '{subdomain}.' . Config::get('app.url')], function () {
    Route::get('/', ['as' => 'index', 'uses' => 'AccountsController@index']);

    Route::group(['prefix' => dirname($_SERVER['SCRIPT_NAME'])], function () {
        Route::get('/posts/{slug}', ['as' => 'account.post', 'uses' => 'PostsController@index']);
        // related routes will go here
    });
});


/**
 * Main site routes
 */

Route::get('/', ['as' => 'home', 'uses' => 'HomeController@showHome']);

我认为这更像是一种 hack 而不是解决方案,所以我不打算将它作为答案发布。如果其他人有更好的解决方案,我很乐意听到。

谢谢

【问题讨论】:

    标签: laravel routing subdomain


    【解决方案1】:

    您可以使用prefix

    Route::group(
        ['domain' => '{subdomain}.localhost', 'prefix' => 'projectName'],
        function () {
            Route::get('/posts/{slug}', ['as' => 'account.posts', 'uses' => 'projectName\\PostsController@index']);
    });
    

    然后使用namespace 之类的:

    namespace projectName;
    
    class PostsController extends baseController {
        //...
    }
    

    【讨论】:

    • 我可能错了,但不确定您是否理解问题所在。 projectName 不是动态的,它是我网站的基本目录。公用文件夹基本是C:\xampp\htdocs\projectName\public 不过,我试过了,还是不行。它使所有内容再次进入我的主页。
    • 你的目录结构是不是像projectName\PostsController?你跑composer dump-autoload了吗?您是否使用subdomain.localhost/projectName/posts.. 作为url
    • 我有默认的项目结构,我的控制器在projectName/app/controllers内。当我转到 subdomain.localhost/projectName/ 时,页面上应该指向帖子的链接改为链接到 subdomain.localhost/posts/slug
    • 对不起!它用于app/controllers/projectName 目录结构。
    • 所以我应该删除命名空间?还是不行。还有其他建议吗?是的,我跑了composer dump-autoload
    猜你喜欢
    • 1970-01-01
    • 2013-10-11
    • 1970-01-01
    • 2017-10-09
    • 1970-01-01
    • 2020-01-04
    • 2016-09-18
    • 2016-09-25
    • 2015-09-10
    相关资源
    最近更新 更多