我正在使用Laravel慢慢地将我的网站迁移到工匠时代。我在AWS
上安装了一个普通的亚马逊linux。
目前我有;www.example.co.uk
blog.example.co.uk
careers.example.co.uk
这些都在同一台服务器上,子域已经使用htaccess
重定向到我的root
中的'blog
和'careers
文件夹,DNS
由Route 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'
请问我做错了什么干杯
这似乎是路由操作顺序的问题,因为它甚至在到达子域路由组之前就匹配了路由。你应该把所有的东西都放到自己的路由组中,这样就可以解决问题。作为一种选择,你可以确保你的未分组路线低于你的分组路线,这也可能解决问题。