RedirectToDomain.php 940 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. <?php
  2. namespace KarmaFW\App\Middlewares;
  3. use \KarmaFW\Http\Request;
  4. use \KarmaFW\Http\Response;
  5. class RedirectToDomain
  6. {
  7. protected $target_domain = 'example.com';
  8. protected $redirect_domains = []; // www.example.com, example.fr, www.example.fr
  9. public function __construct($target_domain, $redirect_domains=[])
  10. {
  11. $this->target_domain = strtolower($target_domain);
  12. $this->redirect_domains = $redirect_domains;
  13. }
  14. public function __invoke(Request $request, Response $response, callable $next)
  15. {
  16. $current_domain = $request->SERVER['SERVER_NAME'];
  17. if (strtolower($current_domain != $this->target_domain)) {
  18. if (empty($this->redirect_domains) || in_array($current_domain, $this->redirect_domains)) {
  19. $redirect_url = 'https://' . $this->target_domain . $request->SERVER['REQUEST_URI'];
  20. return $response->redirect($redirect_url, $this->redirect_status);
  21. }
  22. }
  23. return $next($request, $response);
  24. }
  25. }