- 締切済み
.htaccessを置くと500エラーが出ます
初めまして。 現在閲覧制限のあるサイトをribbon.toで作ろうとしている者なのですが、 .htaccess と.htpasswdの設定についてお伺いしたいところがあります。 現在.htaccess editorというオンライン上のソフトを使いファイルを 作成したのですが、ふたつのファイルをサーバー上のディレクトリに置くと、 500 internal server errorを返されてしまいます。 それぞれのファイルには以下のように記述しています。 (1).htaccess <Files ~ "^\.(htaccess|htpasswd)$"> deny from all </Files> Options -Indexes AuthUserFile AuthUserFile /home/freeuser/ユーザー名/123xxx(フォルダ名)/.htpasswd AuthGroupFile /dev/null AuthName "Please enter your ID and password" AuthType Basic require valid-user order deny,allow (2).htpasswd 設定する予定のユーザー名(半角英字4文字):暗号化されたパスワード(半角英数13文字) ユーザー名までのパス名は、ribbonの質問箱にあった 記述例を参考にしています。 123xxx以下のファイルの閲覧制限をかけたいと思い、 これら2つのファイルをHPビルダーのファイル転送機能を用いて 123xxxフォルダにテキスト転送モードでアップロードしているのですが、 アップロード自体はうまく行くものの、 いざ/123xxx/にアクセスしようとすると500エラーが返ってきます。 ちなみに、なぜか最初だけ一瞬うまく見られかけたのですが、 記述に誤りがあったため修正した途端にエラーが出るようになりました。。。 また使用しているwindowsのパソコンでは、<Files ~ "^(スラッシュの反対の記号).(htaccess|htpasswd)$"> 「スラッシュの反対の記号」の字が認識できず (こちらでも文字化けするようですね)、自動的に¥に 変換されてしまいます。 それも原因なのかな?と思いますが、ribbonさんの.htaccessの 記述例に書いてある通りの記述法に変更してみても (そちらは文字化けしません)同じ現象が起こります。 コマンドの下に改行を入れてみたり、いったん.txtとして アップロードしてから.htaccessファイルに変換してみたりと、 思いつく限りのことはやって見ているのですが、 結果はいつも同じ500エラーで、お手上げの状態です。。 もしも何がおかしいのかお分かりになる方、 或いはこう書き直してみたら?というのが お分かりになる方がいたら、教えて頂けると幸いです。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- colette1873
- ベストアンサー率0% (0/0)
質問者です。なぜかうまく登録IDでログインできなくなってしまったのでこちらから失礼します。 ご親切な回答を重ね重ねありがとうございました!おかげさまでとても勉強になりました。 結局、.htaccess作成をサポートしてくれる初心者向けのレンタルサーバーを利用することにしてしまったのですが、こちらで親切にご回答していただいたおかげで自作の.htaccessの何がおかしかったのかがよく分かり、たいへん参考になりました。 次回こそ自力での設置に挑戦してみたいと思います。役に立つご回答を本当にありがとうございました! (ポイントをつけさせて頂きたいのですが、なぜか自分のIDにログインできないので、その問題が解消するまでお時間をください。どうもたびたびすみません)
- asciiz
- ベストアンサー率70% (6803/9674)
ちゃんと認証ページが表示されたなら、 行末文字の問題は特になさそうですね。 さて、今度は.passwd ファイルの中身の方なんですが、1行ごとに、 「ユーザー名:crypt暗号化済みパスワード文字列」 を書かねばいけません。 これは、直接パスワードをファイルに書かない、というセキュリティ対策です。 例えば、ユーザー名/ID = testuser/testuser としたい時、例えば次のでいけると思います。 testuser:Qq4IatH31DgZc このcrypt暗号化文字列を得るためには、unixなどではコマンドラインツールがあるのですが、例えば次のページを利用してみてください。 http://webtools.jamadam.com/ 一番上の「Input String」に、希望文字列を入れると、一番下のcrypt(3) に、13文字の英数文字列が表示されます。 これが、cryptで暗号化した文字列なので、これを.htpasswd にコピペします。 最初の testuser の例が通れば、希望のID/Password のものも作れると思います。
- asciiz
- ベストアンサー率70% (6803/9674)
.htaccess をパートごとに解説してみます。 | <Files ~ "^\.(htaccess|htpasswd)$"> | deny from all | </Files> ".htaccess" もしくは ".htpasswd" というファイルにアクセスしようとした場合、エラーを返す。(内容を見せたくないため) バックスラッシュの代わりに円記号になるのは、正しいです。 実は同じ文字コードで、英語フォントではバックスラッシュ、日本語フォントでは円記号として表示されます。 | Options -Indexes インデックスアクセスを禁止。 「http://domain.com/123xxx/」というアクセスはエラーになり、 「http://domain.com/123xxx/home.html」「http://domain.com/123xxx/abc.txt」のように、きちんとファイル名を指定しないと表示できないようにしています。 | AuthUserFile AuthUserFile /home/freeuser/ユーザー名/123xxx(フォルダ名)/.htpasswd | AuthGroupFile /dev/null | AuthName "Please enter your ID and password" | AuthType Basic | require valid-user これはちょっと間違ってるようですね。 「AuthUserFile」は1回のみ、そして、サーバーOSからみたフォルダを指定しなければいけないので、次のようになります。 > AuthUserFile /home/freeuser/ユーザー名/htdocs/123xxx/.htpasswd にしてみてください。 | order deny,allow アクセス禁止→アクセス許可 の順に判定する。 (もしユーザーが allow 条件と deny 条件の両方に該当したとき、deny(拒否) 優先となって拒否される) 以上、一応 AuthUserFile の部分だけ直せば通りそうな気がします。 もう一つ気をつける点があるとすれば、行末記号の件があります。 Windowsだと、各行の終わりに CR と LF のコードが付くんですが、Unixの行末記号は LF のみなのが普通です。 FTPでの転送時に「アスキー転送モード」を選ぶと自動変換してくれるので、それで .htaccess や .htpasswd ファイルをアップロードしなおすと良いかもしれません。 (逆に、画像ファイル等をアスキー転送してしまうと、データが書き換えられてグチャグチャになってしまったりします。)
お礼
さっそくのご親切な回答をどうもありがとうございます! 教えて頂いた通りやってみたところ、おかげさまで 500エラーの現象は解消され、認証画面が出てきてくれるようになりました。 ただ、今度はIDとPWをタイプしても「PWが違います」と 弾かれてしまうのですが、、、 まだ行末記号について教えて頂いた部分を直していないので、 それを直してみてうまく行くか試してみたいと思います。 また、調べているうちにribbonさんは私のような初心者向けの サーバではないようだということが分かりましたので、 もしそれでももうまく行かなければ別のサーバ利用も検討しようと 感じました。本当にご助言感謝しています!