奇怪的网址出现webpy 404错误

时间:2014-04-10 16:40:22

标签: python apache http-status-code-404 web.py

我正在运行webpy + Apache服务器。当我尝试导航到/ projects / Index(过去一直有效)时,我收到404未找到的错误。当我检查ctx.fullpath时,它表示请求的路径是/redirect:/code.py/projects.pyc/Index/Index,当它实际上只是/ projects / Index时。为什么会发生这种情况,我该怎么做才能解决这个问题?

在我的主申请文件中,我有这个代码:

urls = (
    "/stream","stream",
    "/","index",
    "/projects","projects",
    "/prj/(.+)", "projects",
    "/projects/(.+)", "projects",
    "/files","files",
    "/login", "login",
    "/Firewall", collector.app_firewall,
)

app = web.application(urls, globals())
session = web.session.Session(app, web.session.DiskStore('/var/www/sessions'), initializer={'count': 0})
application = app.wsgifunc()
class Content:
    root = "/var/www/static" #default document root for open()
    title = "Brian Barrett" #default title
content = Content() 
content.user = "login"

class index:
    def GET(self):
        content.title = "Brian Barrett"
        content.content = open(content.root + "/index.html", "r").read()
        return render.layout(content)

class projects:
    def GET(self, project):
        content.title = project
        content.content = "Project not found! Check <a href='/projects/index'>here</a>."
        if project.endswith("js"):
            return open(content.root + "/projects/" + project).read()
        #the following returns the index of all projects
        if project.lower() == "index" or not project or project == "": 
            content.title = "Projects"
            content.content = open(content.root + "/prj/projects.html", "r").read()
            return render.layout(content)
        #find project in /static/projects, return that
        else:
            html_projects = [] # new array
            for root, dirs, files in os.walk("/var/www/static/prj/"):
                for file in files:
                    if file.endswith(".html"): #if it is an html file
                        html_projects.append(os.path.join(root, file)) #put HTML in array
            for p in html_projects:
                if p.find(str(project.lower())) != -1: #if the filename has the request in it
                    content.content = open(p, "r").read() # set content to said HTML
            content.title = project.replace("_"," ") # important! links must have capitalized titles
            return render.layout(content)

1 个答案:

答案 0 :(得分:0)

答案是我在一个名为projects.pyc的目录中有一个python字节码文件,显然它试图将用户重定向到那里。我删除了该文件并解决了该问题。尽管如此,仍然很困惑为什么会这样做。