为了维护搜索引擎排名,我将旧网站(静态html)的URL路径重定向到新设计的网站中的指定路径。例如:如果旧网站包含/contact-us.html
,则新网站应将该路径重定向到/contact-us
我的方法是创建一个只接受路径并重定向它的处理程序:
# handler redirects URL paths from the old website
class oldPathsHandler(BaseHandler):
def get(self, path):
# dict contains all paths on the old website and their respective directed URLs
old_paths = dict()
# example: index.html should redirect to /home
old_paths['index.html'] = '/home'
old_paths['contact-us.html'] = '/contact-us'
old_paths['php_file.php'] = '/phpfile'
old_paths['pages.html'] = '/pages'
old_paths['page-1.html'] = '/page/1'
# redirects to intended path
self.redirect(old_paths[path])
# routing
app = webapp2.WSGIApplication([
('/', Home),
('/(.+)/?', oldPathsHandler),
('/get/something', AnotherHandler)
], debug = True)
通过这种方法,旧链接确实被重定向到新路径。但问题是,其他不应重定向的URL也会被重定向。上面的路径/get/something
将重定向到/
。
此解决方案应存在于路由配置内的正则表达式中。我是RE的新手,所以我很感激你的帮助。
谢谢。
答案 0 :(得分:2)
更改规则的顺序,你应该没事。稍后,当您看到没有人实际访问旧URL时,您可以删除此处理程序。
app = webapp2.WSGIApplication([
('/', Home),
('/get/something', AnotherHandler),
('/(.+)/?', oldPathsHandler),
], debug = True)