Странная проблема CSS/Apache
-
23-08-2019 - |
Вопрос
Я пытаюсь установить ReviewBoard, и, похоже, все прошло хорошо, насколько я могу получить доступ к сайту и его функциям.
Однако у меня есть странность: по какой-то причине не применяется ни одна таблица стилей.
Я подозреваю, что это может быть проблема с разрешениями для папки, к которой он не имеет доступа, или какая-то ошибка установки Apache, которую я допустил.
Есть ли какая-либо конфигурация Apache, которая могла бы вызвать это?
Кто-нибудь сталкивался с подобными проблемами не только для ReviewBoard?
Дополнительная информация:Похоже, Apache получает запрос на таблицы стилей.
- [20 мая/2009:10:00:35 +0100] "GET /reviewboard/media/rb/css/common.css?1242747706 HTTP/1.1" 404 2512
[20 мая/2009:10:00:35 +0100] "GET /reviewboard/media/rb/css/ie_hacks.css?1242747706 HTTP/1.1" 404 2514
[20 мая/2009:10:00:36 +0100] "GET /reviewboard/media/rb/js/csshover2.htc?1242747706 HTTP/1.1" 404 2514
- [20 мая/2009:10:00:36 +0100] "GET /reviewboard/media/rb/js/pngfix.htc?1242747706 HTTP/1.1" 404 2511
РЕДАКТИРОВАТЬ:Глядя на журналы доступа, GET для CSS на самом деле имеет ошибку 404, поскольку путь должен быть reviewboard/htdocs/media/rb/css/* (хотя в HTTP.conf есть псевдоним, который, как я предполагал, имеет дело с этим.
РЕДАКТИРОВАТЬ:Файл .htaccess содержит
<IfModule mod_expires.c>
<FilesMatch "\.(jpg|gif|png|css|js|htc)">
ExpiresActive on
ExpiresDefault "access plus 1 year"
</FilesMatch>
</IfModule>
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
</IfModule>
РЕДАКТИРОВАТЬ:
Разделы httpd.conf выглядят следующим образом
<VirtualHost *:8080>
ServerName FASKALLYRB
DocumentRoot "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs/reviewboard/htdocs"
# Error handlers
ErrorDocument 500 /errordocs/500.html
ErrorDocument 404 /errordocs/500.html
# Serve django pages
<Location "/">
PythonPath "['C:/Program Files/Apache Software Foundation/Apache2.2/htdocs/reviewboard/conf'] + sys.path"
SetEnv DJANGO_SETTINGS_MODULE reviewboard.settings
SetEnv PYTHON_EGG_CACHE "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs/reviewboard/tmp/egg_cache"
SetHandler mod_python
PythonHandler django.core.handlers.modpython
PythonAutoReload Off
PythonDebug Off
# Used to run multiple mod_python sites in the same apache
PythonInterpreter reviewboard_reviewboard
</Location>
# Serve static media without running it through mod_python
# (overrides the above)
<Location "reviewboard/media">
SetHandler None
</Location>
<Location "reviewboard/errordocs">
SetHandler None
</Location>
<Directory "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs/reviewboard/htdocs">
AllowOverride All
</Directory>
# Alias static media requests to filesystem
Alias reviewboard/media "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs/reviewboard/htdocs/media"
Alias reviewboard/errordocs "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs/reviewboard/htdocs/errordocs"
</VirtualHost>
Решение
URL-адрес для директив Location и Alias не может быть относительным и требует косой черты в начале.Таким образом, вам следует использовать '/viewboard/.......'.
Кстати, директива PythonInterpreter не используется для того, что, по вашему мнению, указывает на ваш комментарий против нее.
# Used to run multiple mod_python sites in the same apache
PythonInterpreter reviewboard_reviewboard
Приложение всегда запускается в одном экземпляре Apache.PythonInterpreter позволяет вам контролировать, какой подинтерпретатор Python в каждом дочернем процессе сервера Apache он запускает.В вашем случае это на самом деле избыточно, поскольку один и тот же дополнительный интерпретатор по умолчанию используется для всех приложений, размещенных на mod_python, под одним и тем же VirtualHost.Обратите внимание, что в каждом из дочерних процессов сервера Apache по-прежнему будет несколько экземпляров приложения.
Другие советы
Вы могли бы создать на доске обзора символическую ссылку под названием «медиа», которая, возможно, указывает на htdocs/media.
Альтернативно:
- переместите htdocs/media в ..
- или зайдите в код доски отзывов и настройте код генерации URL
- или если у вас установлен mod_rewrite, вы можете перенаправлять запросы в нужное место