2012-06-10 4 views
1

Я новичок в GAE. Теперь у меня есть сайт на GAE. Я хочу изменить адрес http://abc.com/about.html на http://abc.com/about/ Как мне это сделать? Благодарю.Как настроить динамический URL-адрес в GAE?

Вот мой main.py:

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

class MainHandler(webapp2.RequestHandler): 
    def get(self): 
     template_values = {} 
     path = os.path.join(os.path.dirname(__file__), 'index.html') 
     self.response.out.write(template.render(path, template_values)) 

class About(webapp2.RequestHandler): 
    def get(self): 
     self.response.our.write(template.render('about.html',None)) 

def main() 
    application = webapp2.WSGIApplication([(
     '.', MainHandler), 
     ('about', About), 
     ]) 
    util.run_wsgi_app(application) 

app = webapp2.WSGIApplication([('/', MainHandler)], 
           debug=True) 

Вот мой app.yaml:

application: nienyiho-test 
version: 1 
runtime: python27 
api_version: 1 
threadsafe: yes 

handlers: 
- url: /favicon\.ico 
    static_files: favicon.ico 
    upload: favicon\.ico 

- url: .* 
    script: main.app 

- url: /about 
    static_files: about.html 
    upload: about.html 

libraries: 
- name: webapp2 
    version: "2.5.1" 
+0

Почему бы вам не показать ваш файл 'app.yaml' и код, который реализует ваш веб-обработчик. –

+0

Привет, Адам, я загрузил свой main.py. Благодарю. – lavitanien

ответ

2

Вам нужно будет изменить свой маршрут. Вы не предоставили нам код, который создает ваши маршруты, но если вы в основном используете статический HTML-файл, тогда как комментарий @AdamCrossland указывает, что вы можете сделать это с помощью файла app.yaml.

Ваш файл app.yaml должен выглядеть примерно так:

application: your_app 
version: 1 
runtime: python27 
api_version: 1 
default_expiration: "1d" 
threadsafe: True 

- url: /about.html 
    static_files: static/html/about.html 
    upload: static/html/about.html 
    secure: never 

- url: /about 
    script: main.app 

- url: /.* 
    script: main.app 

Вы также можете использовать регулярные выражения, как @NickJohnson предлагает here вы можете удалить защищенную линию, если вы хотите, но я использую HTTPS в некоторых из моих приложений и использовать эту строку для обеспечения того, какие маршруты являются безопасными, а не наоборот.

main.py

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

class MainHandler(webapp2.RequestHandler): 
    def get(self): 
     template_values = {} 
     path = os.path.join(os.path.dirname(__file__), 'index.html') 
     self.response.out.write(template.render(path, template_values)) 

class AboutHandler(webapp2.RequestHandler): 
    def get(self): 
     self.response.our.write(template.render('about.html',None) 

# Setup the Application & Routes 
app = webapp2.WSGIApplication([ 
    webapp2.Route(r'/', MainHandler), 
    webapp2.Route(r'/about', AboutHandler) 
], debug=True) 

EDIT: 20120610 - добавил main.py и обновил app.yaml, чтобы показать, как маршрут сгенерированного контента.

+0

спасибо Mark. Я загрузил с моим app.yaml – lavitanien

+0

Но он по-прежнему не работает .... – lavitanien

+0

Удостоверьтесь, что URL:/около выше URL:. * В вашем yaml .. – lecstor

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