перенаправление http или www на https не работает - PullRequest
1 голос
/ 04 октября 2019

Мой сайт должен перенаправлять все ссылки на мой сайт на домен https: //, но при вводе определенным образом он не работает.

https://www.example.com --- работает

example.com --- работает

www.example.com --- не работает, переходит на http: //...

Сайт вызываетглобальный колонтитул из отдельного файла. Когда это не работает, выдает эту ошибку:

    Access to XMLHttpRequest at 'https://www.example.com/header.html'
    from origin 'http://www.example.com' has been blocked by CORS policy:
    Response to preflight request doesn't pass access control check: The
    value of the 'Access-Control-Allow-Credentials' header in the response
    is '' which must be 'true' when the request's credentials mode is
    'include'. The credentials mode of requests initiated by the
    XMLHttpRequest is controlled by the withCredentials attribute.

Этот код вызывает файл заголовка:

    var headerURL = 'https://www.example.com/header.html';
    var xhr = new XMLHttpRequest();
    xhr.open('POST', headerURL, true);
    xhr.withCredentials = true;
    xhr.onreadystatechange = function()
    {
      if (xhr.readyState === 2)
      {
        $('header').load(headerURL + ' header', function()
        {
          ...do stuff with the header...
        });
      }
    }
    xhr.setRequestHeader('Content-Type', 'application/json');
    xhr.send(JSON);

Вот мой файл .htaccess:

    RewriteEngine on
    RewriteCond %{HTTPS} !=on
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_URI} !^/\.well-known/acme-challenge/[0-9a-zA-Z_-]+$
    RewriteCond %{REQUEST_URI} !^/\.well-known/cpanel-dcv/[0-9a-zA-Z_-]+$
    RewriteCond %{REQUEST_URI} !^/\.well-known/pki-validation/(?:\ Ballot169)?
    RewriteCond %{REQUEST_URI} !^/\.well-known/pki-validation/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$
    RewriteRule ^(.*)$ $1.html

    RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$
    RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [L,R=301]

    Redirect /page1.html /page1
    Redirect /page2.html /page2
    Redirect /page3.html /page3
    Redirect /page4.html /page4
    Redirect /page5.html /page5

    ErrorDocument 404 /404.shtml
    ErrorDocument 500 /500.shtml

    # Enable CORS
    Header always set Access-Control-Allow-Origin "https://www.example.com"
    Header always set Access-Control-Allow-Origin "http://www.example.com"

    # ----------------------------------------------------------------------
    # Expires headers (for better cache control)
    # ----------------------------------------------------------------------

    <IfModule mod_expires.c>
      ExpiresActive on

      ...Lots of ExpiresByType rules...

    </IfModule>

Я действительно ничего не знаю о записи файлов .htaccess. Это всего лишь фрагменты, которые я обнаружил, которые сделали то, что мне было нужно (удалите «.html», перенаправили на пользовательские страницы ошибок и задали пользовательские окончания, ...)

Ответы [ 2 ]

0 голосов
/ 04 октября 2019

попробуйте следовать над вашим .htaccess:

    RewriteEngine On
    RewriteCond %{HTTPS} !=on
    RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
0 голосов
/ 04 октября 2019

У меня была такая проблема раньше, и я использую эту часть кода на своем .htaccess

Вот код для «форсирования» WWW. по вашей ссылке:

RewriteEngine On
RewriteCond %{HTTP_HOST}  !^www\.website\.com$ [NC]
RewriteRule ^(.*) http://www.website.com/$1 [L,R]

ИЛИ

Посмотрите на свою Панель хоста , там вы можете проверить все, что касается доменов и перенаправления.

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