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

时间:2018-02-12 01:14:18

标签: php apache laravel-5

我在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都不是真正的原因,我们可以忽略它。

1 个答案:

答案 0 :(得分:1)

我认为应该是

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

ProfilesController

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

如所讨论的那样,路由的顺序很重要,因此如果你在此逻辑之前为'/'声明了一条路由,它将始终首先命中它。