Как я могу 301 перенаправить URL-адрес страницы в Google App Engine? - PullRequest
0 голосов
/ 27 августа 2018

Я обновляю файловую структуру моего статического сайта с ручным кодированием, так как я изначально создал его некоторое время назад, когда у меня не было высокой оценки передовых методов для файловой структуры в веб-разработке.

Я в курсечто для лучшего пользовательского опыта, а также оптимальных целей SEO, перенаправления должны использоваться минимально.

Я искал Stack Overflow и Google в целом, чтобы найти решение для настройки перенаправления 301 для отдельных статических URL-адресов страниц в Google App Engine (GAE), однако мне только кажется, что я могу найти объяснения перенаправления всего доменного имени.

Сайт написан вручную в формате html, css и js с Bootstrap v3.3.7, интегрированным для мобильной реакции.

Сайт размещен на Google App Engine и является поддоменом .appspot.com (http://christopher -john-roberts.appspot.com ).

Например, я буду перемещать следующую страницу:

http://christopher -john-roberts.appspot.com/content/scientific-skills/mres-post-genomic-science.html

на новый URL:

http://christopher -john-roberts.appspot.com/scientific-skills/mres-post-genomic-science.html

все еще под http://christopher -john-roberts.appspot.com /

Мой app.yaml выглядит следующим образом:

 runtime: python27
 api_version: 1
 threadsafe: true

 handlers:
 - url: /
   static_files: www/index.html
   upload: www/index.html

 - url: /(.*)
   static_files: www/\1
   upload: www/(.*)

Мой main.py файл выглядит следующим образом:

import os
from google.appengine.ext import webapp
from google.appengine.ext.webapp import util
from google.appengine.ext.webapp import template

class MainHandler(webapp.RequestHandler):
  def get (self, q):
    if q is None:
      q = 'index.html'

    path = os.path.join (os.path.dirname (__file__), q)
    self.response.headers ['Content-Type'] = 'text/html'
    self.response.out.write (template.render (path, {}))

def main ():
  application = webapp.WSGIApplication ([('/(.*html)?', MainHandler)], debug=True)
  util.run_wsgi_app (application)

if __name__ == '__main__':
  main ()

Если требуется создание сценариев, я бы предпочел реализовать решение на Python, так как это текущее развертывание в GAE.

Не стесняйтесь спрашивать, пропустил ли я какую-либо важную информацию.

Заранее спасибо за ваш ответ.


ОБНОВЛЕНИЕ

Я сейчас попытался отредактировать свой файл main.py, чтобы представить себя.перенаправить следующим образом:

import os
from google.appengine.ext import webapp
from google.appengine.ext.webapp import util
from google.appengine.ext.webapp import template

class MainHandler(webapp.RequestHandler):
  def get (self, q):
    if q is None:
      q = 'index.html'

    if q = 'content/scientific-skills/mres-post-genomic-science.html':
      redirect_url = 'http://christopher-john-roberts.appspot.com/scientific-skills/mres-post-genomic-science.html'
      self.redirect(redirect_url, permanent=True)         

    path = os.path.join (os.path.dirname (__file__), q)
    self.response.headers ['Content-Type'] = 'text/html'
    self.response.out.write (template.render (path, {}))  

def main ():
  application = webapp.WSGIApplication ([('/(.*html)?', MainHandler)], debug=True)
  util.run_wsgi_app (application)

if __name__ == '__main__':
  main ()

Однако это не сработало.При посещении url http://www.christopher -john-roberts.appspot.com / content / Scientific-skill / mres-post-genomic-science.html Я не перенаправлен и вместо этого получаю сообщение об ошибке: NotНайдено Запрошенный URL /content/scientific-skills/mres-post-genomic-science.html не был найден на этом сервере.

Я также пробовал:

import os
from google.appengine.ext import webapp
from google.appengine.ext.webapp import util
from google.appengine.ext.webapp import template

class MainHandler(webapp.RequestHandler):
  def get (self, q):
    if q is None:
      q = 'index.html'      

    path = os.path.join (os.path.dirname (__file__), q)
    self.response.headers ['Content-Type'] = 'text/html'
    self.response.out.write (template.render (path, {}))  

    if q = 'content/scientific-skills/mres-post-genomic-science.html':
      redirect_url = 'http://christopher-john-roberts.appspot.com/scientific-skills/mres-post-genomic-science.html'
      self.redirect(redirect_url, permanent=True)       

def main ():
  application = webapp.WSGIApplication ([('/(.*html)?', MainHandler)], debug=True)
  util.run_wsgi_app (application)

if __name__ == '__main__':
  main ()

А также ...

import os
from google.appengine.ext import webapp
from google.appengine.ext.webapp import util
from google.appengine.ext.webapp import template

class MainHandler(webapp.RequestHandler):
  def get (self, q):
    if q is None:
      q = 'index.html'      

    if q = 'content/scientific-skills/mres-post-genomic-science.html':
      redirect_url = 'scientific-skills/mres-post-genomic-science.html'
      self.redirect(redirect_url, permanent=True)        

    path = os.path.join (os.path.dirname (__file__), q)
    self.response.headers ['Content-Type'] = 'text/html'
    self.response.out.write (template.render (path, {}))       

def main ():
  application = webapp.WSGIApplication ([('/(.*html)?', MainHandler)], debug=True)
  util.run_wsgi_app (application)

if __name__ == '__main__':
  main ()

ОБНОВЛЕНИЕ 2

Я предоставил скриншот ниже моего текущего файла main.py:

снимок экрана файла main.py


ОБНОВЛЕНИЕ 3

Мой последний файл main.py:

последний скриншот main.py

Журналы:

скриншот журналов

1 Ответ

0 голосов
/ 27 августа 2018

Существует self.redirect, встроенный прямо в webapp.Добавьте это к вашему def get(self, q):

logging.info(q)

if q == 'content/scientific-skills/mres-post-genomic-science.html':

    redirect_url = 'http://christopher-john-roberts.appspot.com/scientific-skills/mres-post-genomic-science.html'

    self.redirect(redirect_url, permanent=True)
...