- ベストアンサー
URLの.html省略について
現在、サイトを制作しています。 URLについて教えて下さい。 作成ソフト:iWeb サーバー:lolipop ドメインはムームーで取得しました。 http://www.example.com/A.html を「html」を省いて http://www.example.com/A と表示させたいと思っています。 indexのページは検索サイトなどを見て、ルートディレクトリ配下に .htaccessファイルを置き、.htmlを消す事に成功したのですが、 それ以外のページで消す事が出来ません。 どういった方法で消す事が出来るのでしょうか。 _______________ 元々は、全てのページを http://www.example.com で表示したかったのですが、階層についての記述等を読んで試してみてもうまくいかないのであきらめました。。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
独学でWEBサイトを作成している者です。 ディレクトリインデックスに全てのページを設定すれば良いのではないでしょうか? 私は使った事無いので詳しくはわかりませんが… その参考サイトは恐らくページグループごとにディレクトリを作成していて、階層、ページごとに個々のディレクトリを作り その中に.htaccessファイルを入れているのではないでしょうか? 逆にめんどくないですか・・・ は、さておき、小分けにすれば可能だと思います。 1つのページ毎にディレクトリを作り、そこに.htaccessとHTMLファイルを入れる。 これを全ページ分作る。 そして!!リンクアドレスもそれに変更する!!! これまでやってもだめですかね?
その他の回答 (5)
- Yune-Kichi
- ベストアンサー率74% (465/626)
手っ取り早いのはコンテントネゴシエーションの機能を使ってしまうことでしょうか。 あまり知られていませんが……。 方法は,単純に.htaccessのoptionsにMultiViewsを追加します。 # Apache2のドキュメントにもありますが,AllはMultiViewsを追加しません。 ただし,要テスト,とはなりますが……。 Site: コンテントネゴシエーション - Apache HTTP サーバ http://httpd.apache.org/docs/2.2/ja/content-negotiation.html
お礼
ご教授ありがとうございます。 一気に変更する方法はないか?と調べるうちに、お教えいただいたサイトにもたどり着いて試してみたのですが、 うまくいきませんでした。 (方法が間違っていたのかもしれませんが、その判断さえ出来ませんでした。。。) サイトを作った後の管理もありますので、時間がかかるかもしれませんが、勉強してみようと思います。
- abacabu
- ベストアンサー率37% (250/663)
再度書き込み致します。 No,3、4の書き込みの回答者様は、私も.htaccessに詳しくなかったんであれですが サーバーが重たくなるので別の方法をご教示してくれていますが、 「PATH_INFO」というのはちょっと調べるとPHPというプログラムによる、 動的なファイル(HTMLという形になっていないデータ??)を静的なファイル(PHPという形のファイル??データ???) に落ち着かせて、余り長いアドレスにしない様にする為の物の様です。 良く検索すると?とか&とか数字が入ったやたら長いアドレスありますよね? そういう物を普通のアドレスの様な短い形にするものって感じで良いんですかね?? そういう事の様です!? …そうそう画像でしたね。アドレスは同じディレクトリにある場合には「./名前.gif」などで良いんですが、 そのレンタルしているサーバーの、質問者様が借りてるのが 「http://www.***.ne.jp/~abc/」だったとします。そこにディレクトリに入れずにあるなら 「./abc/名前.gif」となりますし、もし使うファイルも"同じディレクトリ"に入れるなら"「./名前.gif」"となります。 もし1つのディレクトリにまとめてあるなら(仮にimgディレクトリにまとまっている場合)「./img/名前.gif」となります。 htmlと同じディレクトリに無い場合(大概はサイト規模にもよりますがページ数が増えて画像が増えるとぐちゃぐちゃになるので、画像は1つディレクトリ作ってそこに放り込んだ方が整理し易いです)は、 「./画像が入っているディレクトリ名/画像の名前.拡張子」となります。 GIF画像は.gif、JPEG画像は.jpg、PNG画像は.pngという拡張子です。(知ってますよね?一応…) 透過処理して使うならPNGとかGIF、アニメーションならGIFアニメなどの使い分けがあるようですね。 話がそれましたがこんな感じで画像ファイルの位置を指定します。
お礼
No3、4の解説まで、、ありがとうございます。。 「PATH_INFO」についてのサイトをかなり読んだのですが、なかなか理解できませんでした。 動的アドレスの処理などに使うのですね。 まだまだ先になりそうです。。 WEB作成ソフトから書き出してからの手作業が多くはなりますが、 イメージファイルのリンクを教えて頂いた通りに書き換えると おかげさまで.htmlを非表示に出来、すっきりとしたURLにすることが出来ました! 何度も本当にありがとうございました。 大変助かりました。 追伸:画像の話は理解出来ました。笑。
- ORUKA1951
- ベストアンサー率45% (5062/11036)
ちょっと修正 データベースではなく最近はXMLのほうが一般的でしょうね。たとえば 20110501.xmlというファイル <?xml version="1.0" encoding="UTF-8"?> <DOC> <見出し>どこそこでひき逃げ</見出し> <著者> <FIRSTNAME>太郎</FIRSTNAME> <LASTNAME>山田</LASTNAME> </著者> <段落> 20日未明、どこそこで・・・・ </段落> <段落> 犯人は・・・ </段落> <写真> photo/2011/05/05/002.jpg <タイトル>国道1号線・・で</title> <キーワード> </キーワード> </DOC> と書いたものを置いて置けばよい、http://hoge.com/news/20110501.htmlでアクセスされたら、XSLT(XML Stylesheet Language Transformations)でHTMLを作ればよい。これだと誰でも書けるでしょう。
お礼
ご親切に本当にありがとうございます。 お恥ずかしながら、No.4でお教えいただいた内容がほとんどわかりません。 調べながら読ませて頂いているのですが、先にお礼を申し上げます。
- ORUKA1951
- ベストアンサー率45% (5062/11036)
>http://www.example.com/A.html >を「html」を省いて >http://www.example.com/A >と表示させたいと思っています。 まったく意味がわかりません。 Aというファイル名のファイルがあれば表示されるはずです。ただし設定をしない限りはテキストとして表示される。 よほど特殊な事情がない限り、ファイル名まできちんと指定すべきです。サーバーに負荷がかかります。 たとえば、httP://hoge.com/A/B というURLをブラウザに与えると、ブラウザはHTTPサーバー(hoge.com)に対して、/A/Bというファイルを送れと要求します。サーバーはこれを探しますが、Bというファイルがなければ、それをディレクトリとみなして/A/B/として/A/B/を探します。それが存在していれば開いてみます。 httpd.confや.httaccessで下のように指定してあれば、 <IfModule dir_module> DirectoryIndex index.html index.htm index.cgi index.sh </IfModule> 前から順番にファイルを探して表示します。いずれもなければ、またこれも設定にしたがってディレクトリ内のファイル一覧を表示するか、エラーを返すか、その指定もなければ/B/を切り捨てて環境変数に格納し、/Aについて同様な処理を繰り返します。 そして最終的に/までくると、やはりDirectryIndexを探し、。。。。 ですが、他人にアドレスを示したいときなどは、短くするがために http://hoge.com/home とすることがありますが、少なくともhttp://hoge.com/home/としたほうがよいでしょう。 なお、 .htaccessは、それが置かれているディレクトリ以下には適用されます。 書かれている意味がわからないのですが、.htaccessでの設定が許されているならDirectryIndexを index.cgiとかindex.phpにして、先の手順を使って動的に作成すると http://www.example.com/A でページを表示させることは可能です。というか一般的にとても多く行われている方法です。★もちろん.htaccessでHTMLをCGIとして認識させるなら、index.cgiでもよいです。 このページの okwave.jp/qa/q6717936.htmlだってそんなHTMLがあるわけじゃありません。 具体的に示すと http://hoge.com/A/B と要求されると、サーバーにはこんなファイルもディレクトリもありませんから、/A/Bは環境変数PATH_INFOに格納されて、ルートのDirectryIndexファイルを探します。たとえばそれがindex.htmlだとしましょう。)index.htmlはHTMLではなくて、CGIです。 index.cgiはサーバーから環境変数を引き継いで起動します。そして、この場合PATH_INFOの/A/Bを処理 例)データベースのAにあるB行のデータを取り出して、HTMLを作成してユーザーエージェントに返す。 新聞社のサイトがたくさんありますが、これらも原則そういう方法です。外見上は***.htmlですが、あんな馬鹿でかいファイルを置いていたらパンクする。 具体敵なPATH_INFOを使ったページ http://hpcgi1.nifty.com/Iruka/ENV_FORM.cgi/NAME~arukasom/sex~male/date~20110506 で、「ブラウザから受け取ったデータの確認」をクリック ここではENV_FORM.cgiをわざと見せていますが、これを表示させない方法も簡単です。 ここで、/NAME~arukasom/sex~male/date~20110506以下を自由に変えてみてください。たとえば/Aで結構・・・「ブラウザから受け取ったデータの確認」で前のページとは異なることが記述してあることがわかるでしょう。 私も自分の最新のサイトは基本的にHTMLなんてない。すべて動的に作成している。だって同じことたくさん書くのはきついし、メンテナンスが大変です。
お礼
ご教授ありがとうございます。 わかりにくい質問と、せっかく頂いた回答内容を用語等を調べながら読ませて頂いていたのですが、 ほとんど理解出来ていない事を謝ります。。。 申し訳ありません。 URLにファイル名の拡張子(html)が表示されているのを非表示にしたい、という事なのですが わかって頂けますでしょうか。。。? 初心者というのは言い訳になりませんが、 作成ソフトのナビゲーションに従って作成した為、 全てのページはhtmlでしか作れません。 今は、No.1、No.2の方から頂いたアドバイスを元に、 >1つのページ毎にディレクトリを作り、そこに.htaccessとHTMLファイルを入れる。 >これを全ページ分作る。 >そして!!リンクアドレスもそれに変更する!!! という作業を行いました。 URLに表示される拡張子(html)を非表示にすることと <a href=~~~~>部分のリンクアドレスの変更を行い、 他ページへのリンクは問題なく反映させる事が出来ました。 しかし、<img src=~~~>の部分も変更も行ったのですが、 画像データが反映されません。 画像があるはずの場所の枠だけが表示されている状態です。 せっかくお教えいただきましたので、もう少し調べながら読んでみます。
- abacabu
- ベストアンサー率37% (250/663)
お礼ありがとうございます。 その感じですね。 元々これはCGIでカウンターとかを設置する際、SSIが使えると .shtml(SSI利用する為書き出しコードと普通のhtmlファイルが入ったもの)という拡張子で cgi拡張子が見えずに読み込み出来るのですが、SSIが利用できない(無料契約等)と index.cgiなどの拡張子になるのでちょっとカッコ悪いのでこのデータ名が見えない様に ディレクトリ名で開けるようにする為のものですので、 お礼の様にAディレクトリにA.htmlと.htaccess(A.html指定)として以下Bディレクトリ・・・ とすると言う事で参考サイトと同じ感じになると思います。
お礼
何度もありがとうございます。 ご好意に甘えて、、、 ディレクトリの配置をして、Aをテキストエディタで開き、リンクを変更したのですが、 画像のリンクが切れてしまいます。 <a href=~~~~>のリンクは変更がきちんと反映されています。 <img src=~~~>も同じように変更しているのですが、、、。 打ち間違いがないかどうかもう一度見直してみますが、他に可能性が考えられる事はありますでしょうか。。?
お礼
ご教授ありがとうございます! 不勉強で自分の理解が正しいかどうかがわからず、、 現在の状態は、ホームページ作成ソフト(iWeb)からファイルを書き出して、 .htaccessのファイルを追加したので、 Root---A_files(フォルダ) |-A.html |-B_files(フォルダ) |-B.html |-.htaccess となっています。 これを↓のように変更し、 Root---A(フォルダ)---A_files(フォルダ) | |-A.html | |-.htaccess |-B(フォルダ)---B_files(フォルダ) | |-B.html | |-.htaccess htmlファイルをテキストで開いて、各リンクアドレスを変更すれば良い、ということで 間違っていませんでしょうか。。。?