簡體   English   中英

Apache Django URL問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM