0

所以我试图创建一个独特的永久链接,每次有人发布在我的网页上,我希望它是相对搜索引擎友好的,所以我已经做了一些小小的代码来改变标题到一个很好的搜索引擎标题,它正在工作,但然后我的处理程序不能接受它。至少这是我认为正在发生的事情,因为网页只是给了我一个404错误。 HTML工作正常,因为当我重定向到静态页面时,它都会经历。这里是适用的代码:需要帮助在谷歌应用程序引擎中创建永久链接

def post(self): 
    subject = self.request.get('subject') 
    content = self.request.get('content') 

    if subject and content: 
     p = Post(parent = blog_key(), subject = subject, content = content) 
     p.put() 

     id=str(p.key().id()) 

     subject = str(subject) 
     subject = subject.replace(' ', '25fdsa67ggggsd5') 
     subject = ''.join(e for e in subject if e.isalnum()) 
     subject = subject.replace('25fdsa67ggggsd5', '-') 
     subject = subject.lower() 

     url = '/blog/%s/%s' % (id, subject) 
     self.redirect('/blog/%s/%s' % (id, subject)) 

class PostPage(BlogHandler): 
    def get(self, post_id): 
     key = db.Key.from_path('PersonalPost', int(post_id), parent=blog_key()) 
     post = db.get(key) 

     if not post: 
      self.error(404) 
      return 

     self.render("permalink.html", post = post) 

class PersonalPost(db.Model): 
    subject = db.StringProperty(required = True) 
    content = db.TextProperty(required = True) 
    created = db.DateTimeProperty(auto_now_add = True) 
    last_modified = db.DateTimeProperty(auto_now = True) 
    user_id = db.StringProperty(required = True) 

    def render(self): 
     self._render_text = self.content.replace('\n', '<br>') 
     return render_str("post.html", p = self) 

def blog_key(name = 'default'): 
    return db.Key.from_path('blogs', name) 

app = webapp2.WSGIApplication([('/blog/([0-9]+)/([.*]+)', PostPage)] 

而当我再次只是重定向到主页面,并列出他们,但不是当我尝试引导到新的SEO页面它的工作原理。

UPDATE:

我使用的测试网址是设置

subject = "test-url" 
id = "1234" 

的应用程序,然后引导我www.url.com/blog/1234/test-url,但它给了我一个404错误。

+1

这是您的实际缩进吗?你似乎试图在'post'函数中定义'PostPage'类,它永远不会被调用...... – geoffspear

+0

当我粘贴它时,缩进被打乱了,我只是修复了它。缩进在实际代码 – clifgray

回答

1

您在('/blog/([0-9]+)/([.*]+)中定义了两个组,但是您的PostPage.get()只有一个。
将其更改为def get(self, post_id, subject)或删除第二组('/blog/([0-9]+)/[.*]+

+0

上都是正确的,但仍然没有运气......仍然得到了404。处理程序语法应该如何?是('/blog/([0-9]+)/([.*]+)好吗? – clifgray

+0

@clifgray请提供您正在使用的测试网址的示例 –

+0

我刚更新了最后的更多信息 – clifgray