【问题标题】:webpy 404 error with strange URL带有奇怪 URL 的 webpy 404 错误
【发布时间】:2014-05-24 12:15:36
【问题描述】:

我正在运行一个 webpy + Apache 服务器。当我尝试导航到 /projects/Index (过去一直有效)时,我收到 404 not found 错误。当我检查 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)

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2017-03-14
      • 2011-07-08
      • 1970-01-01
      • 2018-12-18
      • 2012-08-02
      • 2014-10-06
      • 2017-10-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多