【发布时间】:2016-04-01 14:15:19
【问题描述】:
我正在使用 Laravel 慢慢地将我的网站迁移到工匠时代。
我在香草 Amazon linux 上的 AWS 上设置了它。
目前我有;
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'
请问我做错了什么 干杯!
【问题讨论】:
-
您的所有路由是否都划分为域组?如果不是,则可能在路由到达子域路由组之前与路由匹配的路由进行了某种操作顺序。我建议要么把所有东西都放在它自己的路由组中,要么确保你的非分组路由低于你的分组路由,看看是否能解决问题。
-
甜蜜!谢谢!将它们分成几组,现在可以工作了。随时留下答案,我会接受。
-
很高兴听到这个消息!如果你不介意接受的话,我会继续回答:)
标签: php apache .htaccess amazon-web-services laravel-5