因此,每当一个人在我的网页上发帖并且我希望它相对搜索引擎友好时,我试图创建一个独特的固定链接,所以我做了一些代码将标题更改为一个好的搜索引擎标题,它正在工作,但我的处理程序无法接受它。至少这是我认为正在发生的事情,因为网页只给我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页面时却没有。
更新:
我正在使用的测试网址是
subject = "test-url"
id = "1234"
该应用程序然后指示我访问www.url.com/blog/1234/test-url,但它给我一个404错误。
答案 0 :(得分:1)
您在('/blog/([0-9]+)/([.*]+)
中定义了两个组,但您的PostPage.get()只需要一个
将其更改为def get(self, post_id, subject)
或删除第二个组('/blog/([0-9]+)/[.*]+
答案 1 :(得分:0)
我认为您应该查看ur处理程序映射上的引号,这似乎不一致。
您的用户:app = webapp2.WSGIApplication([('/blog/([0-9]+)/([.*]+)', PostPage)]
尝试:app = webapp2.WSGIApplication(['/blog/([0-9]+)/([.*]+)', PostPage)]