1

Я установил SSL и пользовательское доменное имя для своего сайта в App Engine.Как перенаправить все запросы на конкретное доменное имя?

Он отлично работает: я могу перейти на https://www.mywebsite.com, и страница загружается.

Но я хотел бы внести следующие изменения.

Если я перейду на mywebsite.com, я должен быть немедленно перенаправлен на https://www.mywebsite.com.

Как я могу это сделать?

+0

Существует много способов сделать это, используя Apache/Nginx/Node/Client side JS/etc. Вы используете 'expressjs'? Нужна дополнительная информация ... –

+0

@RobM. express.js yes – Coder1000

ответ

1

Если вы используете expressjs, то этот код ниже сделает это.

  app.get('*', function (req, res, next) { 

      var checkHost = req.get('host').substring(0, 4); 
      var condition = req.get('x-forwarded-proto') !== "https" || checkHost !== 'www.' || (req.get('host').indexOf('www.') < 0); 
      if (condition) { 
       res.set('x-forwarded-proto', 'https'); 

       if (checkHost === 'www.' && (req.get('host').indexOf('www.') >= 0)) { 
        res.redirect('https://' + req.get('host') + req.url); 
       } 
       else { 
        res.redirect('https://www.' + req.get('host') + req.url); 
       } 
       } else { 
        next(); 
       } 
      }); 
+0

И где я могу поместить этот код? – Coder1000

+0

начало ваших маршрутов файл –

+0

У меня есть много файлов маршрутов, какой? – Coder1000

1

Это можно сделать, прежде чем начинать добавлять маршруты. Он будет проверять протокол каждого запроса и перенаправить к версии протокола HTTPS, если он приходит в более чем HTTP

app.use(function(req, res, next) { 
    if (req.protocol === 'http') { 
     var host = req.host.replace('www.', ''); 
     return res.redirect('https://www.' + host + req.originalUrl); 
    } 
    next(); 
}); 

Обратите внимание, что если Nginx/Апач обработки на HTTPS материал и перенаправление на не-HTTPS узла сервера это будет не хватает. Вам нужно будет посмотреть заголовки в вашем условном, а не req.protocol (что-то вроде условного, что @Asif имеет)

+0

Должен ли я поместить это в свой app.js? – Coder1000

+0

Вам нужно поместить это в свой файл, который вы инициализируете, прежде чем добавлять какие-либо из ваших обычных маршрутов. –

+0

это мой app.js: D большой, THX! – Coder1000

0

Вам нужно создать файл .htaccess у корневого сервера вашего сервера для перенаправления.

файл .htaccess

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteCond %{SERVER_PORT} 80 
RewriteCond %{REQUEST_URI} folder 
RewriteRule ^(.*)$ https://www.urserver.com/folder/$1 [R,L] 
</IfModule> 

с помощью верхней можно перенаправить в ваш домен

0

Вы также можете сопоставить ваш голый доменmywebsite.com в приложение GAE, в дополнение к вашемуwww.mywebsite.com. В основном, повторяя процедуру Adding a custom domain for your application и выбор голую домена на шаге 4 (курсив мой):

Перейдите к следующему шагу Добавить новый домен форму и выбрать собственный домен, который вы хотите указать к вашему приложению App Engine:

  • Укажите домен и поддомены, которые вы хотите отобразить.

    Примечание: Голый домен и WWW поддомена в уже заполнены форма.

    • Голый домен, например example.com, карты для http://example.com.
    • Субдомен, такой как www, соответствует http://www.example.com.
  • Нажмите Отправить отображение для создания нужного отображения.

Плюсы:

  • проще
  • работает как для стандартных, так и гибких приложений ENV, независимо от языка приложения
  • работает для статического контента, а также, в отличие от решений, основанных на приложении изменения кода

Против:

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

    • 1-ый является 301 перенаправление на http://www.mywebsite.com
    • 2 один является 302 перенаправление на https://www.mywebsite.com
+0

Это именно то, что я сделал. Но нет автоматических переадресаций на https-копии:/ – Coder1000

+0

В стандартном env вам просто нужно «secure: always» в 'app.yaml'. Но на самом деле это не будет работать на flex env ... –

Смежные вопросы