2012-12-29 7 views
8

静的なDjangoファイルを提供するためにApacheを設定する際に問題があります。私は共有ホスト上にあり、Apache設定ファイルにアクセスできません。すべての例では、Apacheの設定ファイル内でAliasを使用しています。したがって、私は.htaccessのmod_rewriteでそれを行う方法を理解しようとしています。今、私は現在、サブフォルダadminを有し、その/public_html/mydjangoproject/staticの下のフォルダを持っているように、私はターミナルでpython manage.py collectstaticを実行し、それがそのことをした静的なdjangoファイルを提供するようにhtaccessを設定してください

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

私のsetup.pyは、このようになりますコンテンツ。

私たちは強く を処理するためにdjango.contrib.staticfilesの使用をお勧めします:それはドキュメントhereに言うよう

は、今私は、ちょうどむしろmod_wsgiを経由するよりも、静的なファイルを提供するようにApacheを設定しようとしています(前の セクションで概説として、Webサーバと一緒に、これは にcollectstatic管理コマンドを使用することを意味、STATIC_ROOTの静的ファイルを収集、その後STATIC_URLでSTATIC_ROOTを提供するために、あなたのWeb サーバーの設定)管理ファイル

これを行うには、以下のように.htaccessファイルに3行目を追加しました。私は効果なしに、末尾のスラッシュとせずにライン3を試してみました

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

注:このファイルは、/home2/usr/public_html/mydjangoproject/.htaccess

私の.htaccessファイルです。

私がwww.mysite.com/mydjangoproject/static/に行くと、私は500 Internal Server Errorを受け取ります。同様に、管理ページにはまだ必要なcssファイルがありません。どうしたの?

答えて

11

まあ、.htaccess regexes(yukk!)をつぶす1日のうちに、私はついにこの問題を理解しました。

実際には.htaccessファイルとは関係ありません。問題は私のsettings.pySTATIC_URLにありました。私は使用していたSTATIC_ROOT = '/home2/usr/public_html/mydjangoproject/static'と噛み合うためにSTATIC_URL = '/mydjangoproject/static/'を設定しなければなりませんでした。

だからここでの教訓は、あなたが(私の場合/home2/usr/public_html/)のApacheのDocumentRoot以外の場所あなたの静的ファイルを置く場合はむしろデフォルト/static/を使用するよりも、それに応じてSTATIC_URLでsettings.pyを設定する必要があります。

これは、私がやったことに耐えられない貧しい魂を助けてくれることを願っています!

+0

最後の行が答えでした!私は403 forbiddensでヒットし、アクセス許可とApache設定を修正しようとするウサギの穴に入った。 STATIC_URLをデフォルトから変更してください。 – Nate

関連する問題