- ベストアンサー
URLについて
- URLについて理解を深めましょう。
- URLの構成やパラメータの影響について考えてみましょう。
- URLの終わり方やパラメータの有無によって、アクセス先が変わることがあるので注意しましょう。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
末尾が / の URL が要求された場合 Webサーバーが Apache で静的ファイルを表示するなら、 このモジュールが表示するファイルを決定します http://httpd.apache.org/docs/2.4/mod/mod_dir.html Webサーバーが mod_rewrite などで URL を書き換えるなら、 書き換えた先の CGI なり PHP なりが実行され、その結果が表示されます Webサーバーが Tomcat(などのJavaEEサーバー) なら、 URL にマッピングされたサーブレットが実行され、その結果が表示されます 例) http://www.javadrive.jp/servlet/webxml/index4.html 例) http://www.mkyong.com/webservices/jax-rs/jax-rs-path-uri-matching-example/ つまり外部から見ただけでは構成は不明です。 回答1. 個人的には REST の流行が一番の原因だと思います。 http://ja.wikipedia.org/wiki/REST この哲学にしたがえば URL は「リソースを一意に識別する汎用的な構文」 であることを求められますので、 良) http://www.example.com/category/ ← category・引数なし、のリソースを表す 悪) http://www.example.com/category.php ← 拡張子は唯のシステム都合なので邪魔 悪) http://www.example.com/category/index.html ← いわずものがな この哲学が浸透したので、検索エンジンもこの形式を好むようになり、 SEO に有利という風潮が生まれたのかと推測します。 回答2. URL の仕様的には、以下はすべて正常です。 http://www.example.com/category.php?id=hoge http://www.example.com/category/?id=hoge 余談ではありますが http://allabout.co.jp/gm/gc/23887/
その他の回答 (6)
- Ogre7077
- ベストアンサー率65% (170/258)
> sample.comは大丈夫とのことでしたが 誤) sample 正) example 間違いやすいで注意しましょう 根拠 http://suika.fam.cx/rfc/ja-translations/rfc2606-ja.html 3. 予約例示第二位ドメイン名
- hooochang
- ベストアンサー率0% (0/2)
まず、こちらですが、 >http://www.sample.com/category/index.php >http://www.sample.com/category/music/index.html > >という構成なのでしょうか? > はい、こういった構成です。 質問1、/で終わらなくても大丈夫です。/で終了しなければならない理由は(多分)ないです。 ただ、気おつけなければいけないのは、同一のコンテンツが複数のURLで表示されてしまう件です。 質問2、は、 「論理的かつ人間が理解できる方法で(可能な場合は ID ではなく意味のある単語を使用して)URL を構成できるよう、コンテンツを分類します。」なので、パラメータはない方がSEO的には良いと認識してくたさい。 こんな感じで如何でしょうか?お役に立てましたでしょうか?
お礼
ありがとうございます。 ネットでPATH_INFOについて検索したらSEO的なことが書いてありました。
- ORUKA1951
- ベストアンサー率45% (5062/11036)
>ちょっと質問2の部分が無知なためなかなか理解できないですが…。 PATH_INFO だと思いますが、サーバーはデフォルトでそのファイルがなければ、その末尾は捨てててPATH_INFOに格納して、上位のファイルかディレクトリを探します。ルートまでたどって、はじめてNot Foundを返すのですよ。rewriteなんてまったく関係ないです。 例えば、先の例で言うと /abc/efg/hij/klmのうち、abcが実行ファイルでしたら、PATH_INFO/efg/hij/klmを使ってページを作ればよいし、もしabcがディレクトリでそのディレクトリにDIRECTORY_INDEXで指定された実行ファイルがあれば、それを起動すればユーザーには、 /abc/efg/hij/klmのファイルが提出されたとしか見えない。 とっても単純で明快なシステムですよ。 あなたがレンタルサーバーお持ちでしたら 適当なHTMLファイルをルートに/test/というフォルダーを作って入れておきます。 abc/というディレクトリを作って、そこに AddType application/x-httpd-cgi index.html; としておきます。これでindex.htmlはCGIとして動作します。 [index.html] #/usr/local/bin/perl # PerlへのPATHを書いておく print "Content-type: text/html\n\n"; if($ENV{'PATH_INFO'}){ $filename = '/test'.$ENV{'PATH_INFO'}; if( -f $filename ) { open(IN,"<$filename"); while(<IN>){ print $_; } else{ while(<DATA>){ print $_; } } else{ while(<DATA>){# __END__以降の内容をそのまま使う print $_; } } __END__ <html> <head> <title>タイトル</title> </head> <body> ・・・・・HTMLソースを書く </body> </html> これだけで、http://hoge.com/abc/などでアクセスされると、・・指定されたファイルがあたかもあるように表示される。 プログラム書いたことなくても、おおよそは理解できるはずです。実際に使用するときはエラーへの対処、画像や他のファイルのときのContent-typeの記述、出力HTMLの一部書き換えなどが加わります。例えば各ページに共通なメニューなどはここで追加すれば良いでしょう。
お礼
ありがとうございます。 なんとなく・・・ですがわかってきました。
- JaneDue
- ベストアンサー率75% (263/350)
>という構成なのでしょうか? 既出の通り、一般的にはそうですが、サーバ側で自由に設定できます。 ただし「実際の構成」とはまったく違うことも多く、URLが http://example.com/category/music/ だったとしても、サーバの中には[category]ディレクトリも[music]ディレクトリも存在しないこともよくあります。 サイトがある程度の規模になると、細かくディレクトリ分けして大量のページを作成するのではなく、 http://~/controller.php?ct1=category&ca2=music のように「判定・振り分けプログラム」(コントローラ)にパラメータを渡して処理する方が楽です。 しかしこれだと閲覧者からは分かりにくく、何より「 動的URLはSEOでは不利 」と言われています(諸説あり)。 なので mod_rewriteという機能で、動的URLを静的URLに 内部で変換して http://~/category/music/ => http://~/?ct1=category&ca2=music として処理する手法がよく取られています。 ( mod_rewrite 静的 動的 とかで検索してみて下さい) ※実際どのように処理されているのかは外部からは分かりません。 質問1 サーバ側の管理方法によるので何とも言えませんが、前記のようにディレクトリ名をパラメータに変換している場合、ファイル名は必要ないことも多い 質問2 無理やりとするなら、ファイル名が無ければ指定ファイル(例index.php)になるので http://www.sample.com/category/?id=hoge になるかと。
お礼
ありがとうございます! mod_rewrite、そういえば昔使ったことあります! 自分の場合はresult.php?date=20140501を、result20140501.htmlに変えていました。 それをディレクトリっぽくしているのですね。 気づきませんでした・・・。 わざわざディレクトリっぽくそうするのはSEOのためなのですか。 なんとなく、拡張子がphpだと「phpで書いているのか?」と思われるのがセキュリティ的にNGだからディレクトリっぽくしているのかと思いました。
- ORUKA1951
- ベストアンサー率45% (5062/11036)
具体的な例で示したほうがわかりやすいかも。 なお拡張子は、一切忘れてください。(windowsとは違う) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ サーバーがクライアントから、 GET: /abc/efg/hij/klm という要求を受けたとします。 1)klmというファイルが存在していれば、そのファイルの設定を確認します。 ファイルの種類がtext/htmlと指定してあれば、応答ヘッダ(Content-type:)にtext/html、画像でしたらimage/jpeg などをつけてクライアントに返します。 それが実行ファイルでしたら、処理プログラムに引き渡します。 2)klmがディレクトリでしたら、開いて ・DIRECTORRY INDEXに指定してあるファイルがあればそれを順番に index.html index.php INDEX.HTM とか複数設定することもある ・それがなくて許可されていればディレクトリ一覧を返す 3)klmというファイルもディレクトリもないと、PATH_INFという環境変数に/klmを格納して/hijについて、上と同じ判別を行なう。 4)サーバーのトップまで帰って、この処理を行なう。 (注)サーバーのトップにDIRECTORY INDEXで実行ファイルが指定してあれば、PATHINFO(/abc/efg/hij/klm)を渡して実行 なければNOT FOUNDを返す。 >質問1.なぜ、「/」で終わるように 通常はURLの簡略化でしょう。DIRECTORY_INDEXが指定してあれば、1動作負担をかけますが・・ >質問2.あと、もしパラメータをつけるとしたら パラメーターの渡し方はいくつもあります。 ?以降のQUERY_STRING /以降のPATH_INFO 要求のヘッダに続く、本文--標準入力 >http://www.sample.com/category/music.html の/category/music.htmlがすべて、PATH_INFOであって、物理的にはそれは存在しない場合もあります。 新聞社のサイト、個別の記事のURLはすべてPATH_INFOです。Wikiの HyperText Markup Language - Wikipedia( http://ja.wikipedia.org/wiki/HyperText_Markup_Language ) の/HyperText_Markup_Languageも明らかにPATH_INFOですね。
お礼
ありがとうございます。 仕組みとしてはそのような方法なのですね。 ちょっと質問2の部分が無知なためなかなか理解できないですが…。 もう少し検索して調べてみます^^;
- ok-kaneto
- ベストアンサー率39% (1798/4531)
>という構成なのでしょうか? 違います。 http://www.tohoho-web.com/wwwxx076.htm ファイル名省略時にどのファイルを表示するかはWebサーバにより異なります。 ディレクトリとファイルの違いはご存知ですよね? 一般的にはindex.htmlですがphp等を利用している場合はディレクトリ毎に違うかもしれません。 >質問1. サーバ管理者の一存なので... ディレクトリ毎にアクセス権限やサーバを変更できますのでそれで変更するか、情報を管理する単位でディレクトリを分けている場合が多いかと。 >質問2. パラメータはブラウザ側で指定するのは無理でしょう。
お礼
ありがとうございます! そうですね、ファイルを省略した場合のはわかるのですが、なぜURLの最後をファイルにしないでディレクトリで終わらせているサイトが多いのか疑問に思いましたので質問させて頂きました。 質問2は無理なのですね。
お礼
ありがとうございます。 拡張子付きはよくない、みたいに覚えておけばいいですかね^^; 余談のところで、sample.comは大丈夫とのことでしたが、普通にsample.comはサイトがあるっぽいですね・・・。