Laravel-子域路由前缀会导致其他路由不返回“未找到”

时间:2018-09-02 22:24:36

标签: php laravel routing

[注意]-发现此问题是由于不正确的Apache配置所致。我已经发布了一个答案,解释了我做错了什么。我希望这会有所帮助!


我正在与Laravel合作开始一个项目,并从创建一般路线开始。我想创建一个请求结构,以使example.com的URL转到有机路由,admin.example.com的URL转到我应用的管理控制台,{workspace}.example.com的URL转到用户的动态路由个人工作区。

目前,我具有以下路由结构:

Route::group(array('domain' => 'admin.example.com'), function() {

    Route::get('/', function() {
        echo 'This route works fine';
    });

    Route::get('/test', function() {
        // This route doesn't work...
        echo 'Test';
    });

});


Route::group(array('domain' => '{workspace}.example.com'), function() {

    Route::get('/', function() {
        echo 'This route works fine';
    });

    Route::get('/test', function() {
        // This route doesn't work...
        echo 'Test';
    });

});


Route::group(array('domain' => 'example.com'), function() {

    Route::get('/', function() {
        echo 'This route works fine';
    });

    Route::get('/test', function() {
        // This route doesn't work...
        echo 'Test';
    });

});

如您所见,我有三个路由组。第一个用于管理员前缀URL(以确保不会将admin.example.com误认为是工作空间前缀)。有工作区前缀,最后是无前缀路由组。

如代码中所示,所有Route::get('/', ...路由都可以正常工作,但是不是根节点的所有路由均不起作用。尝试转到example.com/test(和所有其他域前缀)时,我收到404错误。

该如何解决我的路由问题,并使路由Route::get('/test', ...而不是/路由正常工作?

非常感谢!

1 个答案:

答案 0 :(得分:0)

此问题是由Apache配置错误而不是路由错误引起的。

为避免以后再出现此类问题,请确保在项目的AllowOverride阻止apache.conf文件中将All设置为<Directory /var/www/myProject/public>,如下所示:

<Directory /var/www/myProject/public>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>