繁体   English   中英

laravel 5.5-通配符子域不起作用

[英]laravel 5.5 - wildcard subdomain not working

我将laravel应用程序上传到Apache共享托管服务器中,一切设置正常。 我已经设置了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是用于处理URL中的参数subdomain的函数。 但是结果一直将我发送到主登陆页面。 我注意到有此错误:

未捕获(承诺)DOMException:仅允许安全来源

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

我该如何解决?

Update01

按照Ben的评论,我使用下面的.htaccess force SSL

<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>

它将http强制为https 但是,每当我测试xxx.example.com子域时,Chrome都会给出一条隐私错误消息,然后将其更改回: 在此处输入图片说明

和新的错误信息:

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

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

我认为应该

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

并在ProfilesController

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

而且,正如讨论的那样,路由的顺序很重要,因此,如果在此逻辑之前有一个声明为'/'的路由,它将始终先命中它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM