多域 w/ 单 Laravel 安装
Multiple Domains w/ Single Laravel Install
整理一些陈旧的、未解决的问题,并与我自己的问题保持一致。
路线文件:
echo url()->current() ."<br>";
echo request()->getHost();
Route::domain('pro.local')->group(function () {
Route::get('/', function () {
dd('HELLO');
});
});
Route::group(['domain' => 'pro.local'], function() {
dd('PRO');
});
Route::group(['domain' => 'media.local'], function() {
dd('MEDIA');
});
Route::group(['domain' => 'software.local'], function() {
dd('SOFTWARE');
});
Route::get('/', function () {
return view('welcome');
});
需求与环境: 三个域 pro.local、media.local 和 software.local 都指向同一个 public
文件夹使用 MAMP PRO 5.2 和 Laravel 5.7。这是我到目前为止对项目所做的全部。
假设: 使用 Route::domain
或 Route::group
应该会返回 dd()
文本或 welcome
模板。
到目前为止: 我知道我正在使用的单回购设置有效,因为我已经将三个站点 运行 关闭了单回购大约 3 年,可以共享服务,但不能跨项目共享服务。话虽如此,必须通过 SSH 进入三个单独的文件夹以 运行 composer update
和 npm update
是很烦人的;特别是当每个项目的 composer.json
和 package.json
文件基本相同时...我目前使用 gulp
来移动和复制文件以保持同步。
问题:无论域如何,只有 PRO 得到回应。
它似乎跳过了 Route::domain
并选择了第一个 Route::group
,正如将 dd('MEDIA')
调用移到顶部所证明的那样。
Route::group
中的代码总是得到运行,因为Laravel编译各种路由定义供以后使用。因此,当 Laravel 构建路由列表时,您的 dd()
将被执行,无论您在哪个域上,都会使整个过程短路。
如果您将每个调试 dd
调用放在每个路由组内的 Route::get('/', function () {})
中(就像您第一次使用 Route::domain('pro.local')
位一样),您会得到您期望的结果。
Route::group(['domain' => 'pro.local'], function() {
Route::get('/', function () {
dd('PRO');
});
});
Route::group(['domain' => 'media.local'], function() {
Route::get('/', function () {
dd('MEDIA');
});
});
Route::group(['domain' => 'software.local'], function() {
Route::get('/', function () {
dd('SOFTWARE');
});
});
Route::get('/', function () {
return view('welcome');
});
备选方案:将它们全部切换为使用 Route::domain
也最终在另一个论坛上根据发现工作。
整理一些陈旧的、未解决的问题,并与我自己的问题保持一致。
路线文件:
echo url()->current() ."<br>";
echo request()->getHost();
Route::domain('pro.local')->group(function () {
Route::get('/', function () {
dd('HELLO');
});
});
Route::group(['domain' => 'pro.local'], function() {
dd('PRO');
});
Route::group(['domain' => 'media.local'], function() {
dd('MEDIA');
});
Route::group(['domain' => 'software.local'], function() {
dd('SOFTWARE');
});
Route::get('/', function () {
return view('welcome');
});
需求与环境: 三个域 pro.local、media.local 和 software.local 都指向同一个 public
文件夹使用 MAMP PRO 5.2 和 Laravel 5.7。这是我到目前为止对项目所做的全部。
假设: 使用 Route::domain
或 Route::group
应该会返回 dd()
文本或 welcome
模板。
到目前为止: 我知道我正在使用的单回购设置有效,因为我已经将三个站点 运行 关闭了单回购大约 3 年,可以共享服务,但不能跨项目共享服务。话虽如此,必须通过 SSH 进入三个单独的文件夹以 运行 composer update
和 npm update
是很烦人的;特别是当每个项目的 composer.json
和 package.json
文件基本相同时...我目前使用 gulp
来移动和复制文件以保持同步。
问题:无论域如何,只有 PRO 得到回应。
它似乎跳过了 Route::domain
并选择了第一个 Route::group
,正如将 dd('MEDIA')
调用移到顶部所证明的那样。
Route::group
中的代码总是得到运行,因为Laravel编译各种路由定义供以后使用。因此,当 Laravel 构建路由列表时,您的 dd()
将被执行,无论您在哪个域上,都会使整个过程短路。
如果您将每个调试 dd
调用放在每个路由组内的 Route::get('/', function () {})
中(就像您第一次使用 Route::domain('pro.local')
位一样),您会得到您期望的结果。
Route::group(['domain' => 'pro.local'], function() {
Route::get('/', function () {
dd('PRO');
});
});
Route::group(['domain' => 'media.local'], function() {
Route::get('/', function () {
dd('MEDIA');
});
});
Route::group(['domain' => 'software.local'], function() {
Route::get('/', function () {
dd('SOFTWARE');
});
});
Route::get('/', function () {
return view('welcome');
});
备选方案:将它们全部切换为使用 Route::domain
也最终在另一个论坛上根据发现工作。