.htaccess не работает на drupal 7 при загрузке на сервер Пантеона

Мой друпал сайт имеет .htaccess файл, на котором я нахожусь redirecting страница без изменения URLРаботает нормально на local server & Другой servers но когда я загружаю файлы и базы данных в pantheon server Он не будет перенаправлять страницу, говоря 404 not found, я размещен .htaccess в корне code папку, я попытался поместить ее в server root папка, sites папка & themes папка, но у меня ничего не работает. Может ли любой орган знать, как правильно разместить .htaccess в drupal сайт на pantheon? и почему мой .htaccess не работает на pantheon?

4 ответа

Решение

Потому что серверы Pantheon используют Nginx, и они не поддерживают.htaccess.

Вы должны связаться с ними напрямую, чтобы обсудить ваши варианты.

Однако вы можете выполнять перенаправления, используя Drupal settings.php, пожалуйста, смотрите:

https://pantheon.io/docs/articles/sites/code/redirect-incoming-requests/

Pantheon запускает nginx, который игнорирует файлы.htaccess.

Pantheon не использует найденные файлы htaccess, потому что не использует Apache. Pantheon использует Varnish и Nginx в сочетании с быстрым CDN, теперь является стандартом для всех обновленных установок HTTPS.

"Перенаправления должны управляться в PHP, поскольку.htaccess игнорируется. Для получения дополнительной информации см. Использование PHP в качестве альтернативы htaccess". https://pantheon.io/docs/htaccess/

Настройте перенаправления на основной домен с HTTPS в settings.php

Перенаправление, созданное для Пантеона, чрезвычайно уникально. Он может позволить перенаправлениям PHP переходить прямо к слою лака без традиционной задержки переадресаций PHP.

Для Drupal 7 Добавьте следующее в конец файла settings.php (замените www.example.com):

if (isset($_SERVER['PANTHEON_ENVIRONMENT']) && php_sapi_name() != 'cli') {
  // Redirect to https://$primary_domain in the Live environment
  if ($_ENV['PANTHEON_ENVIRONMENT'] === 'live') {
    /** Replace www.example.com with your registered domain name */
    $primary_domain = 'www.example.com';
  }
  else {
    // Redirect to HTTPS on every Pantheon environment.
    $primary_domain = $_SERVER['HTTP_HOST'];
  }

  if ($_SERVER['HTTP_HOST'] != $primary_domain
      || !isset($_SERVER['HTTP_X_SSL'])
      || $_SERVER['HTTP_X_SSL'] != 'ON' ) {

    # Name transaction "redirect" in New Relic for improved reporting (optional)
    if (extension_loaded('newrelic')) {
      newrelic_name_transaction("redirect");
    }

    header('HTTP/1.0 301 Moved Permanently');
    header('Location: https://'. $primary_domain . $_SERVER['REQUEST_URI']);
    exit();
  }
}

См. https://pantheon.io/docs/guides/launch/redirects/

https://pantheon.io/docs/domains/

Для HTTPS https://pantheon.io/docs/http-to-https/

Перенаправление в подкаталоги или конкретные URL

Чтобы перенаправить с субдомена в определенную область сайта, используйте следующее:

// Redirect subdomain to a specific path.
if (isset($_SERVER['PANTHEON_ENVIRONMENT']) &&
  ($_SERVER['HTTP_HOST'] == 'subdomain.yoursite.com') &&
  // Check if Drupal or WordPress is running via command line
  (php_sapi_name() != "cli")) {
  $newurl = 'http://www.yoursite.com/subdomain/'. $_SERVER['REQUEST_URI'];
  header('HTTP/1.0 301 Moved Permanently');
  header("Location: $newurl");
  exit();
}

Для Drupal 8 (хотя это может быть полезно, так как Drupal 8 и Drupal 7 имеют несколько разные настройки перенаправления) Добавьте следующее в конец файла settings.php (замените www.example.com):

if (isset($_SERVER['PANTHEON_ENVIRONMENT']) && php_sapi_name() != 'cli') {
  // Redirect to https://$primary_domain in the Live environment
  if ($_ENV['PANTHEON_ENVIRONMENT'] === 'live') {
    /** Replace www.example.com with your registered domain name */
    $primary_domain = 'www.example.com';
  }
  else {
    // Redirect to HTTPS on every Pantheon environment.
    $primary_domain = $_SERVER['HTTP_HOST'];
  }

  if ($_SERVER['HTTP_HOST'] != $primary_domain
      || !isset($_SERVER['HTTP_X_SSL'])
      || $_SERVER['HTTP_X_SSL'] != 'ON' ) {

    # Name transaction "redirect" in New Relic for improved reporting (optional)
    if (extension_loaded('newrelic')) {
      newrelic_name_transaction("redirect");
    }

    header('HTTP/1.0 301 Moved Permanently');
    header('Location: https://'. $primary_domain . $_SERVER['REQUEST_URI']);
    exit();
  }
  // Drupal 8 Trusted Host Settings
  if (is_array($settings)) {
    $settings['trusted_host_patterns'] = array('^'. preg_quote($primary_domain) .'$');
  }
}

Технически работает Nginx с лаком. перенаправляет и перенаправляет входящие запросы

// 301 Redirect from /old to /new.
if (($_SERVER['REQUEST_URI'] == '/old') &&
  (php_sapi_name() != "cli")) {
  header('HTTP/1.0 301 Moved Permanently');
  header('Location: /new');
  exit();
}
Другие вопросы по тегам