设置子域-AWS&;拉拉维尔


Setting up subdomain - AWS & Laravel

我正在使用Laravel慢慢地将我的网站迁移到工匠时代。我在AWS上安装了一个普通的亚马逊linux。

目前我有;www.example.co.ukblog.example.co.ukcareers.example.co.uk

这些都在同一台服务器上,子域已经使用htaccess重定向到我的root中的'blog'careers文件夹,DNSRoute 53 处理

现在转到laravel时,它只考虑public文件夹(除了附带的默认文件夹外,不再需要htaccess),所以我的DocumentRoot/var/www/example/public。一切都很好!为我的主站点设置了一堆routes,仍然一帆风顺。

现在转到子域,我的hhtpd.conf 中有以下内容

<VirtualHost *:80>
  ServerName blog.example.co.uk
  ServerAdmin webmaster@blog.example.co.uk
  DocumentRoot /var/www/example/public
  <Directory /var/www/example/public>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Order allow,deny
    allow from all
  </Directory>
  ErrorLog /var/log/blog.example.co.uk.error.log
  LogLevel warn
  CustomLog /var/log/blog.example.co.uk.access.log combined
</VirtualHost>

正如你所看到的,我将子域指向同一个公用文件夹,因为Laravel应该能够看到blog.example.co.uk被请求并履行其职责以正确路由。

我有以下子域的路线

Route::group(['domain' => 'blog.example.co.uk'], function () {
    Route::get('/', 'BlogController@home')->name('blog-home');
    Route::get('review', 'BlogController@review')->name('blog-review');
    Route::get('author/{id}', 'BlogController@author')->name('blog-author')->middleware('blogGuard');
    Route::get('category/{id}', 'BlogController@category')->name('blog-category')->middleware('blogGuard');
    Route::get('post/{id}', 'BlogController@post')->name('blog-post')->middleware('blogGuard');
    Route::get('press', 'BlogController@press')->name('blog-press');
    Route::get('about', 'BlogController@about')->name('blog-about');
});

不幸的是,转到blog.example.co.uk仍然假设我请求了www.example.co.uk,并使用主站点的逻辑进行路由。所以blog.example指向www.example

我也用过'{blog}.example.co.uk'

请问我做错了什么干杯

这似乎是路由操作顺序的问题,因为它甚至在到达子域路由组之前就匹配了路由。你应该把所有的东西都放到自己的路由组中,这样就可以解决问题。作为一种选择,你可以确保你的未分组路线低于你的分组路线,这也可能解决问题。