8

静的Djangoファイルを提供するようにApacheを設定するのに問題があります。共有ホストを使用していて、Apache構成ファイルにアクセスできません。すべての例AliasはApache構成ファイルで使用されているため、.htaccessのmod_rewriteを使用してそれを行う方法を理解しようとしています。

私のsetup.pyは次のようになります:

STATIC_ROOT = '/home2/usr/public_html/mydjangoproject/static'
STATIC_URL = '/static/'

私はpython manage.py collectstaticターミナルで実行し、それがそのことを実行したので、現在/public_html/mydjangoproject/static、サブフォルダーadminとそのコンテンツが含まれているフォルダーがあります。

ここのドキュメントにあるように、mod_wsgiを経由するのではなく、静的ファイルのみを提供するようにapacheを構成しようとしています。

django.contrib.staticfilesを使用して管理ファイルを処理することを強くお勧めします(前のセクションで概説したWebサーバーとともに。これは、collectstatic管理コマンドを使用してSTATIC_ROOTに静的ファイルを収集し、Webサーバーを構成して提供することを意味します。 STATIC_URLのSTATIC_ROOT

これを行うために、以下に示すように、.htaccessファイルに3行目を追加しました。このファイルはにあります/home2/usr/public_html/mydjangoproject/.htaccess

私の.htaccessファイル:

AddHandler fcgid-script .fcgi
RewriteEngine On
RewriteRule /static/ /home2/usr/public_html/mydjangoproject/static
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ mysite.fcgi/$1 [QSA,L]

末尾のスラッシュがある場合とない場合で3行目を試しましたが、効果はありませんでした。

www.mysite.com/mydjangoproject/static/にアクセスすると、500内部サーバーエラーが発生します。同様に、管理ページはまだ必要なcssファイルを取得していません。どうしたの?

4

1 に答える 1

12

さて、.htaccess正規表現(yukk!)を丸一日いじった後、私はついに問題を理解しました。

実際には、.htaccessファイルとは何の関係もありません。問題は私のsettings.py STATIC_URLにありました。STATIC_URL = '/mydjangoproject/static/'使用していたものと噛み合うために設定しなければならなかったことがわかりましたSTATIC_ROOT = '/home2/usr/public_html/mydjangoproject/static'

したがって、ここでの教訓は、静的ファイルをApache DocumentRoot以外の場所(/home2/usr/public_html/私の場合)に配置する場合は、デフォルトを使用するのではなく、それに応じSTATIC_URLsettings.py/static/に設定する必要があるということです。

これが私がしたことに耐えることからいくつかの貧しい魂を助けることを願っています!

于 2012-12-30T07:56:31.097 に答える