题
我一直在尝试安装 ReviewBoard,一切看起来都很顺利,只要我可以访问该网站和功能
然而,我很奇怪,由于某种原因似乎没有应用样式表。
我怀疑这可能是无法访问的文件夹的权限问题或我犯的一些 Apache 设置错误。
是否有任何 Apache 配置可能导致此问题?
有没有人遇到过类似的问题,不仅仅是ReviewBoard?
更多信息:看起来 Apache 正在接收样式表的请求
- [20/5/2009:10:00:35 +0100]“获取/reviewboard/media/rb/css/common.css?1242747706 HTTP/1.1”404 2512
[20/5/2009:10:00:35 +0100]“获取/reviewboard/media/rb/css/ie_hacks.css?1242747706 HTTP/1.1”404 2514
[20/5/2009:10:00:36 +0100]“获取/reviewboard/media/rb/js/csshover2.htc?1242747706 HTTP/1.1”404 2514
- [20/5/2009:10:00:36 +0100]“获取/reviewboard/media/rb/js/pngfix.htc?1242747706 HTTP/1.1”404 2511
编辑:查看访问日志,CSS 的 GET 实际上是 404-ing,因为路径应该是 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>
解决方案
Location 和 Alias 指令的 URL 不能是相对的,并且需要一个前导斜杠。因此,您应该使用“/reviewboard/.......”。
FWIW,PythonInterpreter 指令没有用于您对它的评论似乎表明您认为它可以使用。
# Used to run multiple mod_python sites in the same apache
PythonInterpreter reviewboard_reviewboard
应用程序始终在同一个 Apache 实例中运行。PythonInterpreter 的作用是允许您控制其运行的每个 Apache 服务器子进程中的 Python 子解释器。在您的情况下,它实际上是多余的,因为默认情况下相同的子解释器用于同一 VirtualHost 下的所有 mod_python 托管应用程序。请注意,每个 Apache 服务器子进程中仍然存在应用程序的多个实例。
其他提示
您可以在评论板中创建一个名为“media”的符号链接,该链接可能指向 htdocs/media。
或者:
- 将 htdocs/media 移至 ..
- 或者进入评论板代码并调整 url 生成代码
- 或者如果您安装了 mod_rewrite 您可以将请求重定向到正确的位置