laravel 5.5 - 通配符子域无法正常工作

问题描述 投票:0回答:1

我在Apache共享托管服务器上传我的laravel应用程序,一切设置正常。我有CNAME记录设置*子域并将其指向public_html/。然后我在我的routes/web.php中设置此代码:

Route::domain('{subdomain}.example.com')->group(function () {
    Route::get('/', function ($subdomain) {
        Route::get('/profiles/sub/{subdomain}', 'ProfilesController@subDomain');
    });
});

ProfilesController@subDomain是从subdomain处理参数URL的函数。但结果不断将我发送到主要登录页面。我注意到这个错误:

未捕获(在承诺中)DOMException:仅允许安全的起源

我不确定这是否与任何部分有关。

我该如何解决这个问题?

Update01

在Ben的评论之后,我force SSL与下面的.htaccess

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews -Indexes
    </IfModule>

    RewriteEngine On
    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} (.+)/$
    RewriteRule ^ %1 [L,R=301]


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

<ifmodule mod_rewrite.c>
 RewriteEngine On
 RewriteCond %{HTTPS} !=on
 RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
</ifmodule>

它将迫使httphttps。但每当我测试像xxx.example.com这样的子域名时,Chrome会给出隐私错误消息,然后将其更改回:enter image description here

和新的错误消息:

获取脚本时发生SSL证书错误。

提醒一下,我正在尝试解决这里的通配符子域问题。如果所有这些SSL不是真正的原因,我们可以忽略它。

php apache laravel-5
1个回答
1
投票

我认为应该是

Route::domain('{subdomain}.example.com')->group(function () { 
    Route::get('/', 'ProfilesController@subDomain'); 
});

ProfilesController

public function subdomain($subdomain) {
//do something
}

并且如上所述,路由的顺序很重要,因此如果您在此逻辑之前为'/'声明了路由,它将始终首先命中它。

© www.soinside.com 2019 - 2024. All rights reserved.