apacheで自宅サーバーを運営しているのですが、http://www.xxx.yyy.com/では最後の/をつけなくてもアクセスできるのですが、ユーザーのページ(http://www.xxx.yyy.com/~xxx/)では最後の/を付けないとエラーになってしまいます。
調べてみたのですが、よくわからなくて掲示板を利用させていただきました。
> apacheで自宅サーバーを運営しているのですが、http://www.xxx.yyy.com/では最後の/をつけなくてもアクセスできるのですが、ユーザーのページ(http://www.xxx.yyy.com/~xxx/)では最後の/を付けないとエラーになってしまいます。
前者と後者は話が全く違うので、同じ次元で見ないようにしてください。
前者は、Apacheは関係ない世界で解決されています。、つまりブラウザが勝手に最後の「/」を補完しているだけです。(ブラウザがGET / HTTP/1.0と/でアクセスしているだけです。)
後者は、mod_dirで補完されますが、デフォルトでこのモジュールは入りますから設定を弄繰り回していない限り、機能そのものが動いていないことはないと思います。具体的な動作は、最後の「/」なしでアクセスがあり、それがディレクトリ名として存在する場合、Apacheは301エラーを返し、
Location http://http://www.xxx.yyy.com/~xxx/
というリダイレクトメッセージを返してくるので、ブラウザは改めて「/」付きでアクセスに行きます。下記のようにtelnetで「/」なしでアクセスしたときのレスポンスを見れば何かヒントが見つかると思います。リダイレクトは動いているが設定がおかしく正しくリダイレクトできていないのではないでしょうか?
# telnet localhost 80 <-入力
:
GET /~xxx HTTP/1.0 <-入力
:
HTTP/1.1 301 Moved Permanently <-応答
:
Location http://http://www.xxx.yyy.com/~xxx/ <-応答
お返事ありがとうございます。
過去にバックアップしておいたファイルと見比べてみたところ、記述ミスでした、ご迷惑おかけしました。
> お返事ありがとうございます。
> 過去にバックアップしておいたファイルと見比べてみたところ、記述ミスでした、ご迷惑おかけしました。
こういう形で終わってしまうと、このスレは何も役にたちません。おやじも、ひとつのアプローチ方法を提示したのに役に立ったのかどうかもわかりません。他の方の参考になりますし、おやじ自身、何が原因だったのかがわからずじまいで、おやじの知識を切り売りしただけ? と少しさびしくなります。
おやじがこのBBSを動かしているのは、おやじが経験できない多くの事柄があがってくるので、解決に向けたやり取りの中でいろいろ勉強させてもらいたいからです。従って、結果がどうなったか書いてもらえないスレは正直後で見ても何の役にも立たないので、消してしまってもいいのではと思います。
是非、「証明書等が正しくても、こういうミスをするとSSL起動できないよ。」という具体的な情報提供をお願いします。
> 是非、「証明書等が正しくても、こういうミスをするとSSL起動できないよ。」という具体的な情報提供をお願いします。
私の場合、UseCanonicalNameディレクティブが機能していなかったのが原因でした。通常は、onにすることで/が補完されるはずだと思っていたのですが、offにしてみたら/が自動で付くようになったわけです。
実際に私の使っているhttpd.confのファイルは、以前使っていたもので、apache3.**をインストールした時に出来る新規httpd.confファイルとは明らかに記述が違います。 ですので、ちょっと普通と違うと思って具体的な提示は控えていました。
基本的には、UseCanonicalNameをOnにする事と、ServerNameを正しく指定すれば、http://localhost/~XXXとするとhttp://localhost/~XXX/と自動的に/が付きます。 通常ですと、初期設定がOnになっているのでこの心配はないようですが...
> > 是非、「証明書等が正しくても、こういうミスをするとSSL起動できないよ。」という具体的な情報提供をお願いします。
>
> 私の場合、UseCanonicalNameディレクティブが機能していなかったのが原因でした。通常は、onにすることで/が補完されるはずだと思っていたのですが、offにしてみたら/が自動で付くようになったわけです。
> 実際に私の使っているhttpd.confのファイルは、以前使っていたもので、apache3.**をインストールした時に出来る新規httpd.confファイルとは明らかに記述が違います。 ですので、ちょっと普通と違うと思って具体的な提示は控えていました。
> 基本的には、UseCanonicalNameをOnにする事と、ServerNameを正しく指定すれば、http://localhost/~XXXとするとhttp://localhost/~XXX/と自動的に/が付きます。 通常ですと、初期設定がOnになっているのでこの心配はないようですが...
情報をありがとうございます。やはり、このようにチャント情報を提供していただくと、おやじの環境では起こらないことなので非常に勉強になります。今回の件は、一般的には、起こりやすい非常に重要な問題があると思います。
結論からいうと、おやじは、特に自宅サーバではUseCanonicalNameがoffというのがデフォルトと思います。外部からのアクセスは関係ありませんが、家庭内からのアクセスを考えると、おやじはそう思います。何故なら、内向きDNSもしくはhostsでServerNameで記述したサーバ名を牽くことができない環境では、UseCanonicalNameがOnになっていると、例えば、おやじの環境でサーバ機で、http://localhost/~oyajiとやると、http://www.aconus.com/~oyajiにリダイレクトされます。ところが、DNSを牽くとグローバルアドレスになってしまいルータが対応していないと(どちらかといえば、グローバルでアクセスできないのが当たり前ですが)アクセスできなくなってしまうからです。最後の「/」の補完はmod_dirがやってくれる話ですから今回の件は「/」の補完が問題ではないはずです。
UseCanonicalNameがoffならサーバ名の変更がされずに、「/」の補完だけが動くので既にアクセスできたからApacheに来ているのですから、ホスト名を変えなければなんら問題なくアクセスできて当たり前です。
因みに、SuSEのUseCanonicalNameのデフォルトはoffです。一般的には、エンドユーザがアクセスしてきたとおり(IPならIPのまま)で問題はないと思いますが。
>通常ですと、初期設定がOnになっているのでこの心配はないようですが...
すみません。デフォルトはたしかにOffですね。 訂正します。^^;