我在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>
它会强制http
到https
。但每当我测试xxx.example.com
这样的子域名时,Chrome都会给出隐私错误消息,然后将其更改回:
和新的错误消息:
获取脚本时发生SSL证书错误。
提醒一下,我正在尝试解决这里的通配符子域问题。如果所有这些SSL
都不是真正的原因,我们可以忽略它。
答案 0 :(得分:1)
我认为应该是
Route::domain('{subdomain}.example.com')->group(function () {
Route::get('/', 'ProfilesController@subDomain');
});
和ProfilesController
:
public function subdomain($subdomain) {
//do something
}
如所讨论的那样,路由的顺序很重要,因此如果你在此逻辑之前为'/'
声明了一条路由,它将始终首先命中它。