別の Apache2.0.40のサーバーで実現をしたいのですが、その設定場所がわかりません。httpd.confを修正すればよいのではと考えています。
http://01s.info/webtech/content_negotiation
おそらくコンテントネゴシエーションが働いているのでしょう。
本来はブラウザの設定によって別言語を表示するときによく使う機能です。
Apache1.3 と 2.0以降では設定方法が変わっているようですが、
http://httpd.apache.org/docs/2.0/ja/mod/mod_negotiation.html
こちらのモジュールで設定できそうです。
ただ、実際に試せる状況にありませんので可能かどうかは判りません。
http://httpd.apache.org/docs/2.0/ja/mod/mod_mime.html#multiv...
こちらも関係あるかもしれません。
DirectoryIndex はあくまでファイル名を指定しなかった場合のものなので、関係ありません。
コンテントネゴシエーションではファイル識別子の探索順を明示的に指定することは出来ないようです。(言語識別子なら順番指定出来るのですが)
ここは方法をまったく変えて mod_rewrite を使うしかないように思います。
http://www.net-newbie.com/trans/mod_rewrite.html
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^/(.*) /$1 [L]
RewriteCond %{REQUEST_FILENAME}.shtml -f
RewriteRule ^/(.*) /$1.shtml [L]
RewriteCond %{REQUEST_FILENAME}.shtm -f
RewriteRule ^/(.*) /$1.shtm [L]
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^/(.*) /$1.html [L]
RewriteCond %{REQUEST_FILENAME}.htm -f
RewriteRule ^/(.*) /$1.htm [L]
このような設定で可能かと思いますが、テストはしていません。
ただ、個人的には設定が複雑な上、挙動がどうなるか混乱するだけで余りメリットがないようには思います。
いっそ aaa ディレクトリを作成し、その中に index.(shtml|shtm|html|htm)を置く運用ルールにしてはどうでしょうか?
これであれば DirectoryIndex で対応できます。
ただ、元のファイル名でのアクセスは /aaa/index.shtml 等になってしまいますが。
ありがとうございます。mod_rewriteについてはちょっと保留です。それ以外の解決があるのではと期待をします。
http://pasokoma.jp/hajimete.shtml と言うアドレスはhttp://pasokoma.jp/hajimeteでできたと言うことで別サーバーでも簡単にできると踏んだのです。
今回、試みているApache2.0.40では
http://xxx.net/hajimete.shtml と言うアドレスはhttp://xxx.net/hajimeteではアクセスできないが、
http://xxx.net/hajimete.html と言うアドレスはhttp://xxx.net/hajimeteでアクセスできると言う状態です。
質問上、優先順位があるのではと言う質問になってしまいましたが、hajimeteと言うページが1つしかないようにして、hajimete.shtmlが表示されるようにできればそれはそれで解決です。
http://01s.info/webtech/content_negotiation#FILES-TO-PREPARE
mime.typesかhttpd.confで、
text/html html htm
という行を
text/html shtml shtm html htm
と書き換えてapache再起動してみましょう
やってみます。
ありがとうございます。
「Options Multiviews」でOKです。1.3→2.0で変ったのはMultiviewsの振舞いを細かく制御できるようになったことです。
ありがとうございます。
mime.types に .shtml が text/html を要求された際に返す拡張子として定義されているかどうか、がサーバによって挙動が変わった理由かな、と予想します。
apache2 だと、mime.types や httpd.conf 以外でも例えば .htaccess で
AddType text/html .shtml
AddOutputFileter INCLUDES .shtml
・・という感じに設定されていれば大丈夫かと思うのですが、いかがでしょうか。
ありがとうございます。
ありがとうございます。ヒントで少し進みました。
このコンテントネゴネーションは有効になっていました。
http://xxx.net/aaa.htmlならばhttp://xxx.net/aaaでアクセスできたからです。
次の問題です。http://xxx.net/aaa.shtmlをアクセスしないのです。ファイル識別子として、.shtmlを探し、.shtm、.html、.htmの順に探すようにさせたいのです。
DirectoryIndex index.shtml index.shtm index.html index.htm index.html.var index.php index.cgi
にはしてあります。