[英]Apache Django URL problem
我允許用戶通過mysite.com/go/QUERY \\提交查詢
如果查詢包含“ /” Apache扼流圈。
從urls.py:
(r'^go/(?P<querytext>.*)$', 'mysite.engine.views.go'),
嘗試:
http://mysite.com/go/http%3A%2F%2F
結果:
Not Found
The requested URL /go/http:// was not found on this server.
Apache/2.2.12 (Ubuntu) Server at ...
但是,如果我輸入非URL引用的值,則可以正常工作: http://mysite.com/go/http://
://mysite.com/go/http: http://mysite.com/go/http://
WORKS就可以了...
有任何想法嗎?
您的httpd阻止了編碼的斜杠。
嘗試將AllowEncodedSlashes On
添加到您的apache配置中以在apache中啟用編碼的斜杠(docs)
從Django文檔看來,在實現命名組( http://docs.djangoproject.com/en/1.1/topics/http/urls/時,只應使用(?P....)
表示法#named-groups )。
嘗試通過消除?P
或完成語法並命名組為類似(?P<search-term>.*)
修復正則表達式(?P<search-term>.*)
看起來您可能需要先解碼URL,然后再傳遞。 您可以使用urllib.unquote
做到這一點。
>>> import urllib
>>> urllib.unquote("""http%3A%2F%2F""")
'http://'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.