Apache Django проблема с URL - PullRequest
       9

Apache Django проблема с URL

2 голосов
/ 11 февраля 2010

Я разрешаю пользователям отправлять запросы на 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:// РАБОТАЕТ просто отлично ...

Есть идеи?

Ответы [ 3 ]

3 голосов
/ 11 февраля 2010

Ваш httpd блокирует закодированные косые черты.

попробуйте добавить AllowEncodedSlashes On в конфигурацию apache к включить закодированные косые черты в apache (docs)

2 голосов
/ 11 февраля 2010

Из документов Django похоже, что вы должны использовать нотацию (?P....) только при реализации именованной группы (http://docs.djangoproject.com/en/1.1/topics/http/urls/#named-groups).

Попробуйте исправить свое регулярное выражение, либо избавившись от ?P, либо заполнив синтаксис и присвоив группе имя, например (?P<search-term>.*)

0 голосов
/ 11 февраля 2010

Похоже, вам может понадобиться декодировать URL, прежде чем вы передадите его. Вы можете сделать это с urllib.unquote.

>>> import urllib
>>> urllib.unquote("""http%3A%2F%2F""")
'http://'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...