带单个Laravel安装的多个域

时间:2019-02-15 01:02:56

标签: php laravel mamp laravel-5.7 mamp-pro

整理一些陈旧,尚未解决的问题,并与我自己的问题保持一致。

路由文件:

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::domainRoute::group应该会返回dd()文本或welcome模板。

到目前为止:我知道我正在使用的Mono-repo设置是可行的,因为我已经使三个站点运行了Mono-repo了大约3年,并且可以共享服务以及什么不跨项目。如此说来,必须通过SSH进入三个单独的文件夹来运行composer updatenpm update令人讨厌。尤其是在每个项目的composer.jsonpackage.json文件基本相同的情况下……我目前使用gulp移动和复制文件以保持同步。

问题:无论是哪个域,只有PRO都会得到回应。

enter image description here enter image description here enter image description here

似乎跳过了Route::domain并停留在第一个Route::group上,如将dd('MEDIA')调用移到顶部所示。

enter image description here

1 个答案:

答案 0 :(得分:0)

当Laravel编译各种路由定义以供以后使用时,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'); }); 也会导致在另一个论坛上每次发现都起作用。