【问题标题】:Setting up subdomain - AWS & Laravel设置子域 - AWS 和 Laravel
【发布时间】: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 文件夹,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'

请问我做错了什么 干杯!

【问题讨论】:

  • 您的所有路由是否都划分为域组?如果不是,则可能在路由到达子域路由组之前与路由匹配的路由进行了某种操作顺序。我建议要么把所有东西都放在它自己的路由组中,要么确保你的非分组路由低于你的分组路由,看看是否能解决问题。
  • 甜蜜!谢谢!将它们分成几组,现在可以工作了。随时留下答案,我会接受。
  • 很高兴听到这个消息!如果你不介意接受的话,我会继续回答:)

标签: php apache .htaccess amazon-web-services laravel-5


【解决方案1】:

看起来这是您的路由操作顺序的问题,它甚至在到达子域路由组之前就匹配了路由。您应该将所有内容放入其自己的路由组中,这应该可以解决问题。作为替代方案,您可以确保您的非分组路线低于您的分组路线,这也可能解决问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-01
    • 2017-07-18
    • 1970-01-01
    • 2014-11-08
    • 2023-01-28
    • 2015-09-18
    • 2015-02-15
    • 2013-07-22
    相关资源
    最近更新 更多