整理一些陈旧,尚未解决的问题,并与我自己的问题保持一致。
路由文件:
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都使用MAMP PRO 5.2和Laravel 5.7指向同一public
文件夹。到目前为止,这是我对项目所做的一切。
假设::使用Route::domain
或Route::group
应该会返回dd()
文本或welcome
模板。
到目前为止:我知道我正在使用的Mono-repo设置是可行的,因为我已经使三个站点运行了Mono-repo了大约3年,并且可以共享服务以及什么不跨项目。如此说来,必须通过SSH进入三个单独的文件夹来运行composer update
和npm update
令人讨厌。尤其是在每个项目的composer.json
和package.json
文件基本相同的情况下……我目前使用gulp
移动和复制文件以保持同步。
问题:无论是哪个域,只有PRO都会得到回应。
似乎跳过了Route::domain
并停留在第一个Route::group
上,如将dd('MEDIA')
调用移到顶部所示。
答案 0 :(得分:0)
const gulpScss = require('gulp-sass');
const gulpBabel = require('gulp-babel');
const paths = {
scss: [
'public/stylesheets/*.scss'
],
js: [
'public/js/*.js'
]
};
const scss = () => {
return gulp.src(paths.scss)
.pipe(gulpScss)
.pipe(gulp.dest('dist'));
}
scss.description = 'Transpiles scss files to css.';
const js = () => {
return gulp.src(paths.js)
.pipe(gulpBabel({
presets: ['@babel/env']
}))
.pipe(gulp.dest('dist'));
}
js.description = 'Transpiles JS with babel';
const watch = () => {
gulp.watch(paths.scss, scss);
gulp.watch(paths.js, js);
}
watch.description = 'Watches for changes to files and runs their associated builds.';
const defaultTasks = gulp.series(
gulp.parallel(scss, js),
watch
);
defaultTasks.description = 'Builds scss, and js, then watches them for changes and rebuilds upon change.';
module.exports = {
default: defaultTasks,
scss,
js
}
始终中的代码将始终运行。因此,您的Route::group
将在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');
});
也会导致在另一个论坛上每次发现都起作用。