- ベストアンサー
httpd.confへの書き方
.htaccessで以下のように書いています。 <FilesMatch "\.(html|htm)$"> SetEnvIf Accept-Language ja OKL order deny,allow deny from all allow from env=OKL </FilesMatch> これをapache2のhttpd.confに書いたところ、SetEnvIf Accept-Language ja OKLの行をちゃんと認識してくれません。jaの部分をenとかにしてもアクセス出来てしまいます。この行をhttpd.confに書くにはどのように書けばいいのでしょうか。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
どうも失礼いたしました。 Apacheアニュアルを見るとSetEnvIfディレクティブのコンテキスト(設定ファイル中のどこで有効なのか)は サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccessとなっていますね。 つまり、サーバ設定ファイル(httpd.conf)でも有効であることが解ります。 次のようにしてはどうでしょうか httpd.confで SetEnvIf HTTP_ACCEPT_LANGUAGE "ja" OKL のように定義しておいて、たとえば以下のように <Directory>...</Directory>にてアクセス制御を記述する <Directory "/ディレクトリのフルパス"> ... order deny,allow deny from all allow from env=OKL </Directory>
その他の回答 (1)
記述は合っていると思いますが アクセスしているブラウザが ja を送信していることは間違いありませんかね。 (つまり、HTTP_ACCEPT_LANGUAGE : ENV{HTTP_ACCEPT_LANGUAGE} に ja がセットされて来ていない場合は受け入れてしまう)
お礼
ありがとうございます。OSは日本語版のWindowsXPでブラウザはInternet Explorer7です。$ENV{'HTTP_ACCEPT_LANGUAGE'}ではjaで取得できています。上記のものを.htaccessへ記述した場合は正常に動作しており、jaの文字列を変更すれば正常に制限されます。 httpd.confに記述した場合のみ、jaの部分の文字列が認識されていないようです。htaccessとhttpd.confでは異なる書き方をしないと動作しないものが以前ありましたので、SetEnvIf Accept-Language の場合もそうなのかなと思いましたが、記述はあっているのでしょうか。
補足
ちなみに、 ブラウザの言語にjaが含まれている場合のみ、指定ファイルへのアクセスを許可したいと考えています。
お礼
jaを"で囲むことにより解決しました。有難うございました。