質問
ReviewBoard をインストールしようとしましたが、サイトと機能にアクセスできる限り、すべてうまくいったようです。
しかし、なぜかスタイルシートが適用されていないように見える違和感があります。
アクセスできないフォルダーのアクセス許可の問題、または私が行った Apache のセットアップエラーの可能性があると思います。
これを引き起こした可能性のある Apache 設定はありますか?
ReviewBoard に限らず、同様の問題を経験した人はいますか?
詳細情報:Apache がスタイルシートのリクエストを受信しているようです
- [20/May/2009:10:00:35 +0100] "GET /reviewboard/media/rb/css/common.css?1242747706 HTTP/1.1" 404 2512
[20/May/2009:10:00:35 +0100] "GET /reviewboard/media/rb/css/ie_hacks.css?1242747706 HTTP/1.1" 404 2514
[20/May/2009:10:00:36 +0100] "GET /reviewboard/media/rb/js/csshoover2.htc?1242747706 HTTP/1.1" 404 2514
- [20/May/2009:10:00:36 +0100] "GET /reviewboard/media/rb/js/pngfix.htc?1242747706 HTTP/1.1" 404 2511
編集:アクセス ログを見ると、パスは reviewboard/htdocs/media/rb/css/* であるはずなので、CSS の GET は実際には 404 になっています (ただし、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は相対的であると先頭のスラッシュを必要とすることはできません。したがって、あなたが使用する必要があります「/ reviewboard /.......'.のp>
FWIW、PythonInterpreterディレクティブは、それに対するあなたのコメントは、あなたがそれがないと思う示しているようだ何のために使用されていません。
# Used to run multiple mod_python sites in the same apache
PythonInterpreter reviewboard_reviewboard
アプリケーションは常に同じApacheのインスタンス内で実行されます。何PythonInterpreterが行うことは、あなたがそれを実行する各サーバーのApacheの子プロセス内のどのPythonのサブインタプリタを制御できるようです。同じサブインタプリタがmod_pythonのは同じのVirtualHostの下でアプリケーションをホストされているすべてのために使用されるデフォルトであるように、それは、あなたのケースで、実際に冗長です。まだApacheサーバの子プロセスの各中に、アプリケーションの複数のインスタンスが存在することになることに注意してください。
他のヒント
おそらく htdocs/media を指す「media」という名前のシンボリックリンクをレビューボードに作成できます。
あるいは:
- htdocs/media を .. に移動します。
- または、レビューボードのコードに移動して、URL 生成コードを微調整します。
- または、mod_rewrite がインストールされている場合は、リクエストを適切な場所にリダイレクトできます