2011-07-13 28 views
0

我試圖創造一些別名::問題的重定向在蟒蛇的AppEngine

util.run_wsgi_app(webapp.WSGIApplication([ 
    (r"/(.{1,2})", MainPage) 
], debug=debug) 

class MainPage(webapp.RequestHandler): 
def get(self,token): 
    token_dict = { 
     'fb':'http://www.facebook.com/anilashanbhag', 
     '+' :'http://plus.google.com/106274357148468411814', 
     't' :'http://twitter.com/masteranil' 
    } 
    logging.debug(token) 
    if token in token_dict: 
     self.redirect(token_dict[token]) 
    else: 
     self.redirect('/') 

的問題是,FB和T的工作,但+犯規。我以爲appengine是編碼的網址,但隨後日誌顯示 /+ 404 ....

+0

? – carlpett

+0

它不起作用。好吧,我不知道什麼令牌輸入get函數,或者如果在所有進入 –

回答

3

+是RFC 1738 - Uniform Resource Locators (URL) specification中列出的保留字符。它被保留是因爲它被用作URL的分隔符語法的一部分。嘗試URL編碼你的角色(%2B),看看是否有幫助。

+0

好了,所以如果你看到我的規則,它是。{1,2}。如果我明確地要+它將會是\ +。我已經試過%2B,但不工作 –

+3

「%2B」爲3個字符;如果這確實是你的應用程序正在接收的,404是因爲處理程序不匹配超過2。 – geoffspear

0

確定完成的緣故:正確的答案是:: 「%2B」爲3個字符;這就是應用程序接收,404是因爲甲肝你試着用`進行urlencode(「+」)``替代「+」'的處理程序不匹配多於2