1

よろしくお願いします。

これが私がいる場所であり、私が達成しようとしていることです。

  • / home / username / code / project /static/に静的ファイルがあります
  • 私のドキュメントルートは/home/ username / public_html /(これは私の.htaccessファイルがある場所です)です。
  • .htaccessファイルで次のものを使用しようとしています(httpd.confにアクセスできません)。

    RewriteRule ^(static/.*)$ /home/username/code/project/static/ [L]
    

    しかし、mod_rewriteのドキュメントを正しく理解している場合(以下を参照)、「/ home / username / code / project / static /」は、ドキュメントルートに相対的なファイルシステムパスとして、または絶対パスとしてではなくURLパスとして扱われます。意図したとおりのファイルシステムパス。

「〜/ code / project / static/」と「../code/project/static/」を使用しようとしましたが、自分のページにアクセスしようとすると内部サーバーエラーが発生しました(はい、私は少し初心者です)。

だから私の質問は:.htaccessコンテキストで使用される書き換えルールを私のDocumentRootに相対的なパスではなく絶対ファイルシステムパスに置き換える方法はありますか?

参照用にmod_rewriteドキュメントからの抜粋を次に示します(完全な情報はここにあります:http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewriterule):

たとえば、/ www / file.htmlの置換文字列を指定した場合、ルートまたはファイルシステムにwwwという名前のディレクトリが存在しない限り(または、書き換えを使用する場合は)、これはURLパスとして扱われます。ドキュメントルートを基準にした.htaccessファイル内)。この場合、ファイルシステムパスとして扱われます。

どんな助けでも大歓迎です:)

ありがとう!

4

1 に答える 1

2

あなたがやろうとしていることを達成する一つの方法は、public_html内にを指すシンボリックリンクを作成することstaticです/home/username/code/project/static/。これには、オプションディレクティブのドキュメントFollowSymlnksに詳述されているオプションが必要ですが、完全なApache構成内では許可されない場合があります。これは制御できません。

より良いアプローチは、リンクを逆にすることです-実際のファイルを保持するpublic_html / staticを作成してから、/ home / username / code / project/staticをpublic_html/staticへのシンボリックリンクにします。これにより、特定の.htaccessルールが不要になります。とにかくそのディレクトリの下のファイルをパブリックアクセス可能にしたいように思われるので、パブリックアクセス可能なファイルをすべて同じディレクトリ構造の下に保持し、シンボリックリンクの許可から生じる潜在的なセキュリティ問題を回避するため、セキュリティ面でも優れています。 Webルート内からファイルシステムの他の領域へ。

于 2013-02-15T18:41:22.293 に答える