Как интегрировать систему форумов PHP с новым сайтом Django

Я только собираюсь запустить новый веб-сайт Django (RedHat EL4, Apache 2.0.52, Django 1.1, mod_wsgi), переходя от базового сайта static-html и php. В настоящее время Django обрабатывает каждый запрос на новом сайте, начиная с корня сайта (т.е. mydomain.com/ обрабатывается Django).

На старом сайте был создан форум PhpBB по адресу mydomain.com/forum/. Я пытаюсь выяснить, как (или если) я могу заставить систему форума жить в том же месте на новом сайте. Итак, все в mydomain.com/forums/ обрабатывается PhpBB, а все остальное обрабатывается Django.

Я чувствую, что директива Apache 'Location' - это инструмент для использования, но я не получаю достаточно конкретных советов от Apache docs и Google. Я достаточно знаком с конфигурационными файлами Apache, но раньше мне не приходилось делать подобные вещи. Спасибо за любые предложения.

1 ответ

Решение

У меня есть статические файлы, обслуживаемые с моего хоста через следующее в моей конфигурации apache:

  Alias /media /sites/mysite.org/www/media
  <Location /media>
    Order allow,deny
    Allow from all
  </Location>

При этом Apache имеет дело с псевдонимом еще до того, как он попадет в Django. Я предполагаю, что вам просто нужно включить php для работы с этим каталогом.

ОБНОВЛЕНИЕ Согласно комментарию Грэма ниже. Посмотрите на раздел "Что использовать, когда" в http://httpd.apache.org/docs/current/sections.html

Что использовать, когда

Выбор между контейнерами файловой системы и контейнерами веб-пространства на самом деле довольно прост. При применении директив к объектам, которые находятся в файловой системе, всегда используйте или. При применении директив к объектам, которые не находятся в файловой системе (например, веб-страница, созданная из базы данных), используйте.

Важно никогда не использовать при попытке ограничить доступ к объектам в файловой системе. Это связано с тем, что многие местоположения веб-пространств (URL) могут отображаться в одно и то же местоположение файловой системы, что позволяет обойти ваши ограничения. Например, рассмотрим следующую конфигурацию:

<Location /dir/>
Order allow,deny
Deny from all
</Location>

Это прекрасно работает, если запрос для http://yoursite.example.com/dir/. Но что, если вы находитесь в нечувствительной к регистру файловой системе? Тогда ваше ограничение может быть легко обойдено путем запроса http://yoursite.example.com/DIR/. Директива, напротив, будет применяться к любому контенту, обслуживаемому из этого места, независимо от того, как он называется. (Исключение составляют ссылки на файловую систему. Один и тот же каталог может быть размещен в нескольких частях файловой системы с использованием символических ссылок. Директива будет следовать по символической ссылке без сброса пути. Поэтому для обеспечения наивысшего уровня безопасности символические ссылки должны быть отключено соответствующей директивой Options.)

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

Другие вопросы по тегам