Проблема с обслуживанием учебника по "опросам" Django под lighttpd: 404 страница не найдена

Я следую учебнику по опросам Django, который работает на 100% со встроенным сервером разработки (python3 manage.py runserver).

Я настроил lighttpd для обслуживания django через UWSGI, и это, кажется, работает нормально, за исключением одной проблемы: URL, передаваемый django, кажется, был изменен.

Моя конфигурация lighttpd в основном следующая:

...
server.modules += ("mod_scgi","mod_rewrite")
scgi.protocol = "uwsgi"
scgi.server   = (
    "/polls" => ((
             "host" => "localhost",
             "port" => 7000,
             "check-local" => "disable",
    ))
)

Маппинг в учебнике Django выглядит следующим образом:

# tutorial1/urls.py
urlpatterns = [
    path('polls/', include('polls.urls')),
    path('admin/', admin.site.urls),
]

# polls/urls.py
app_name = 'polls'
urlpatterns = [
    path('', views.IndexView.as_view(), name='index'),
    path('<int:pk>/', views.DetailView.as_view(), name='detail'),
    path('<int:pk>/results/', views.ResultsView.as_view(), name='results'),
    path('<int:question_id>/vote/', views.vote, name='vote'),
]

Однако когда я нажимаю http://localhost:8080/polls/ в адресной строке, появляется ошибка 404.

enter image description here

Если я добавляю дополнительный /polls к URL, то он работает просто отлично.

enter image description here

enter image description here

Моя цель в этом упражнении - иметь возможность обслуживать это приложение, переключаясь с и на оба сервера, без необходимости каждый раз изменять конфигурационные файлы.

Что мне нужно сделать на стороне lighttpd.conf, чтобы сделать lighttpd взаимозаменяемым с внутренним dev-сервером Django?

Я пытался добавить следующее правило url.rewrite, но оно полностью портит работу с URL.

url.rewrite = (
    "^/polls/(.*)$" => "/polls/polls/$1"
)

Спасибо!

Пробовали ли вы использовать пустую строку? (Это не совсем корректный ответ на вопрос, но я не могу сделать комментарий)

scgi.server   = (
    "" => ((
             "host" => "localhost",
             "port" => 7000,
             "check-local" => "disable",
    ))
)
Вернуться на верх