- ベストアンサー
.htaccessでサーバエラー
- レンタルサーバを契約更新して新しいサーバに移動した結果、.htaccessを使用するとサーバエラーが発生し、HPが閲覧不可になってしまいます。
- HTML単位でキャッシュ制御を行うために、<meta>タグを使用しましたが効果がありませんでした。
- サーバはOCNのBizメール&ウェブ ビジネスのホスティングサービスを利用しています。.htaccessを使用する方法はありますか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
ん~。ANo.3の結果を見るとやっぱりHeaderを指定するのがダメっぽいですな。 とするとこれはもうどうしょうもないかな。 OCNにこだわりやお付き合いや政治的な圧力が無ければさっさと別の場所に移るのが吉かと。 どーーーーーしてもこのまま運用してかつno-cacheしたいんだい、となると・・・・例えばPHPとRewriteが使えるのであれば(←OCN メール&ウェブ ビジネスの説明を見るとWordPressが使えるらしいのでこれはOKなはず)、no-cacheヘッダーを返した後ファイルを読んでその中身を返すようなphpを書き、それを.nocache.phpなどという名前でサーバーのドキュメントルートにアップロードする。 そしてドキュメントルートの.htaccessには以下のような設定を書く。以下の内容はFilesディレクティブの中に入れなくていいというか入れちゃいけない。 RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} -f RewriteCond %{REQUEST_FILENAME} \.(html|pdf)$ RewriteRule . /.nocache.php [L] これで.htaccessにHeaderディレクティブを書けなくてもあなたがやりたい事は実現可能だ。
その他の回答 (3)
- anmochi
- ベストアンサー率65% (1332/2045)
> 4.5. > →500が返ってきました。HTML表示せず という事は4が鍵かな。 Files ~ つまりFilesMatchを許可しないという事なのかも知れない。 test.htmlとtest.phpファイルをドキュメントルートに置いて、.htaccessを Options -Indexes SetEnv TZ JST-9 <Files "test.html"> Order deny,allow Deny from All </Files> <Files "test.pdf"> Header set Pragma no-cache Header set Cache-Control no-cache </Files> としてみよう。これでindex.htmlやhoge.pdfはコンテンツが返ってくるがtest.htmlは403が返ってきて、test.pdfはHTTPレスポンスヘッダーにPragma no-cacheならば、正規表現によるファイル名のパターンマッチが許可されないという事になる。 これで500ならtest.htmlだけにしてみる、その次にtest.pdfだけにしてみる、という風に試していただきたい。
お礼
重ね重ね本当にありがとうございます。 そしてお詫びをしなければなりません。 前回の試行の結果に誤りがありました。 4.は成功しておりました。 嫌な予感がしてもう一度試してみたのですが、anmochiさんが仰るとおりの内容でした。 結果→pdfのみ403 申し訳ありませんでした。5.及びFileMatchはhtm pdfともに500でした。 そして今回の試行結果ですが <html pdf> test.html →500 hoge.html →500 test.pdf →500 hoge.pdf →500 <htmlのみ> test.html →403 hoge.html →○ test.pdf →○ hoge.pdf →○ <pdfのみ> test.html →500 hoge.html →500 test.pdf →500 hoge.pdf →500 以上の結果になりました。
- anmochi
- ベストアンサー率65% (1332/2045)
> 記述してみましたが、403ではなく500が返ってきました。 500か、やねこいな。 500というのは「何か分からないけどとにかくエラーになったよ」という意味で、 原因の特定が難しい。 とにかく最初から.htaccessが置かれていたのだから.htaccess自体が許可されないという事はないはずなので、ちょっとずつ書いてはアクセスしてみよう。 1.初期状態の.htaccessに戻す。 これでダメならもうどうしょうもない。OCNに問い合わせるべきだろう。 2..htaccessを以下の内容にする。 Options -Indexes SetEnv TZ JST-9 Order deny,allow Allow from All これは正しくhtmlが表示されたら成功。 3..htaccessに以下を記述。 Options -Indexes SetEnv TZ JST-9 Order deny,allow Deny from All これは403が返ってきたら成功。 4..htaccessに以下を記述。 Options -Indexes SetEnv TZ JST-9 <Files ~ "\.(pdf)$"> Order deny,allow Deny from All </Files> これでhtmlは表示できるがpdfをダウンロードしようとすると403になると成功。 これが成功なら後はHeaderだけだ。 5..htaccessに以下を記述。 Options -Indexes SetEnv TZ JST-9 <Files ~ "\.(pdf|html)$"> Header set Pragma no-cache Header set Cache-Control no-cache </Files> Files ~ の変わりにFilesMatchを使うとうまくいく場合は記述をそちらに変えよう。 Options -Indexes SetEnv TZ JST-9 <FilesMatch "\.(pdf|html)$"> Header set Pragma no-cache Header set Cache-Control no-cache </FilesMatch> あと、このファイルを修正するのはWindowsのメモ帳ではいけない。 オリジナルの.htaccessを調べて改行コードがLFのみであればサクラエディタなどで編集してアップロードしよう。
お礼
書き込みありがとうございます。 1.2. →動作しました 3. →403が返ってきました。 4.5. →500が返ってきました。HTML表示せず エディタはTeraPadを使っています。 改行コードの指定はないようですが、LFのみでアップしましたが改善されませんでした。 http://support.ntt.com/mw-business/faq/detail/pid23000000qj
- anmochi
- ベストアンサー率65% (1332/2045)
仮に <Files ~ "\.(pdf|html)$"> Header set Pragma no-cache Header set Cache-Control no-cache </Files> を <Files ~ "\.(pdf|html)$"> Order deny, allow Deny from All </Files> としてアクセスした時にサーバーエラーにならずに403になるようなら Headerディレクティブ(mod_header)が無効になっている。 この場合はHeaderを使えるようにOCNさんと交渉するか諦めてよそに移るかしかないな。
お礼
書き込みありがとうございます。 記述してみましたが、403ではなく500が返ってきました。 まだ希望はあるのでしょうか・・・?
お礼
phpまでいくと私の手には負えなくなってきますので、サーバ再移転を含めて検討します。 勉強するか否かでしょうか笑 本当にありがとうございました。