我目前正在Microsoft Azure上使用标准网站来托管web.py网站。
在web.py中,惯例是创建一个名为/static
的目录来托管静态文件,如images,css和javascript。在我当地的环境中,这很好用。
但是,当我部署到Microsoft Azure时,我的静态内容会返回错误404.当我通过FTP查看目录时,我可以看到文件 都存在且正确。
我觉得这与我的本地安装不需要使用wsgi这一事实有关,但是Azure上的IIS上的托管确实如此。
我在Microsoft Azure python文档中发现,您可以使用web.config文件来提供静态内容,而无需使用web.py服务器,这会更快并可能解决此问题,但这似乎不太可能解决了这个问题。
任何和所有帮助将不胜感激。您可以在下面看到我的webapp.py和web.config文件。
webapp.py
import web
render = web.template.render('templates/')
urls = (
'/', 'index',
'/feed', 'feed'
)
app = web.application(urls, globals(), autoreload=False)
class index:
def GET(self):
return render.index()
class feed:
def GET(self):
return 'The RSS feed of all the blogs on CS Blogs will appear here'
# If this file is being ran as the main program, start the web app.
if __name__ == "__main__":
app.run()
# This function allows azure to hook up the correct URLs to the correct functions
def wsgiHandler():
return web.application(urls, globals(), autoreload=False).wsgifunc()
的web.config
<?xml version="1.0"?>
<configuration>
<appSettings>
<add key="WSGI_HANDLER" value="webapp.wsgiHandler()" />
<add key="PYTHONPATH" value="D:\home\site\wwwroot" />
</appSettings>
<system.web>
<compilation debug="true" targetFramework="4.0" />
</system.web>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true" />
<handlers>
<remove name="Python273_via_FastCGI" />
<remove name="Python340_via_FastCGI" />
<add name="Python FastCGI"
path="handler.fcgi"
verb="*"
modules="FastCgiModule"
scriptProcessor="D:\Python27\python.exe|D:\Python27\Scripts\wfastcgi.py"
resourceType="Unspecified"
requireAccess="Script" />
</handlers>
<rewrite>
<rules>
<rule name="Static Files" stopProcessing="true">
<conditions>
<add input="true" pattern="false" />
</conditions>
</rule>
<rule name="Configure Python" stopProcessing="true">
<match url="(.*)" ignoreCase="false" />
<conditions>
</conditions>
<action type="Rewrite"
url="handler.fcgi/{R:1}"
appendQueryString="true" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
答案 0 :(得分:0)
你需要添加一个mime类型&#34;非标准&#34;你需要退回的类型。
示例:对于ogg,m4a和pdf,您可以在Web的根目录中添加以下config.xml。如果已经存在config.xml,则将该部分合并。可以在http://www.feedforall.com/mime-types.htm找到完整的扩展名列表及其mimeType。
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<staticContent>
<remove fileExtension=".m4a" />
<mimeMap fileExtension=".m4a" mimeType="audio/mp4a-latm"/>
<remove fileExtension=".ogg" />
<mimeMap fileExtension=".ogg" mimeType="application/ogg"/>
<remove fileExtension=".pdf" />
<mimeMap fileExtension=".pdf" mimeType="application/pdf"/>
</staticContent>
</system.webServer>
</configuration>
希望这会有所帮助。希利在坦帕
答案 1 :(得分:0)
我遇到了同样的问题。请尝试以下修改:
替换
<remove name="Python273_via_FastCGI" />
<remove name="Python340_via_FastCGI" />
使用这些行:
<remove name="Python27_via_FastCGI" />
<remove name="Python34_via_FastCGI" />
希望这可以解决您的问题。 :)