это возможно с базовым URL протокола php - PullRequest
0 голосов
/ 08 июня 2019

Итак - я сделал сайт с php включением в шапку у меня следующее

<?php
$protocol = (!empty($_SERVER['HTTPS'])) ? 'https' : 'http';
$path = $protocol . '://domain.com/';
?>

но почему-то, когда я ставлю www. в строке URL, он ломает сайт У меня даже 301 прямой в cpanel

есть ли способ добавить www или нет www к этому?

1 Ответ

0 голосов
/ 08 июня 2019

Возможно иметь функцию для абсолютного http(s) пути, лучше всего проверить, отвечает ли сервер как HTTP или HTTPS и переписать код php в соответствии с новым путем ...

check.php

<?php
  // Checking for HTTP or HTTPS
  function check_protocol() {
    $isSecure = false;
    if (isset($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) == 'on') {
      $isSecure = true;
    } elseif (!empty($_SERVER['HTTP_X_FORWARDED_PROTO']) && strtolower($_SERVER['HTTP_X_FORWARDED_PROTO']) == 'https' || !empty($_SERVER['HTTP_X_FORWARDED_SSL']) && strtolower($_SERVER['HTTP_X_FORWARDED_SSL']) == 'on') {
      $isSecure = true;
    }
    return $isSecure;
  }
  $protocol = check_protocol() ? 'https://' : 'http://';
  $host = $protocol . $_SERVER['HTTP_HOST'];
?>

Использование простое:

<?php
  include("check.php");
  echo $host;
  // it prints http://www.example.com or https://www.example.com
?>

или использование абсолютного пути благодаря $ _ SERVER ['DOCUMENT_ROOT'] :

<?php
  include($_SERVER['DOCUMENT_ROOT'] . "/php/check.php");
  echo $host;
  // it prints http://www.example.com or https://www.example.com
?>

В дополнение к этому может быть полезным перенаправление с использованием .htaccess, если сервер размещен на Apache сервере ...

Я нашел полезным это правило для моего .htaccess:

RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]

Это правило может не работать на другой конфигурации сервера ... прочитайте этот поток для получения дополнительной информации о самой различной конфигурации сервера ...

Я надеюсь, что этопомогает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...