• 締切済み

静的URL変換について

現在,phpでウェブサイトを作成しているのですが、 サイト内検索をしたときのURLを静的化できないか、考えております 例)getで送った際のURL hoge.com/search.php?keyword=hoge 修正後 hoge.com/kewyword_hoge.php そして、その際にやりたいことは、hoge.com/kewyword_hoge.phpをインデックスさせ このURLのページにアクセスしてきたときにhoge.com/search.php?keyword=hogeを 実行するようにしたいのですが、これって可能でしょうか? 静的URL変換自体は問題ないのですが、 hoge.com/kewyword_hoge.phpにアクセスしてもhoge.com/search.php?keyword=hoge を実行してくれず困っております。 恐れ入りますが、解決策をご教授いただけませんでしょうか? 何卒宜しくお願いします。 また、私のやりたいことは以下のサイトで参考になります。 ■インデックスされているURL(google) http://j-sen.jp/kanto/keyword_%E3%81%86%E3%81%A9%E3%82%93.htm ■サイト内検索のURL http://j-sen.jp/search/?area=kanto&nmin%5Bname%5D=&nmin%5Btime%5D=&nmin%5Bn%5D=&wage=&freeword=%E3%81%86%E3%81%A9%E3%82%93&day=&hour=&feature%5B%5D=&feature%5B%5D=&medical=1&except_medical=0&x=82&y=22 どちらも検索結果は同じですが、サイト内検索のURLを静的化し、 google先生にインデックスさせています。 お手数ですが、改めて解決策のご教授お願い申し上げます。

  • PHP
  • 回答数1
  • ありがとう数6

みんなの回答

  • f1204-okw
  • ベストアンサー率84% (16/19)
回答No.1

search.php が,$_GET['keyword'] の値を参照することで検索を実行する機構になっているとします。 このとき keyword_hoge.php は,$_SERVER['REQUEST_URI'] などを参照して keyword である hoge を取り出し $_GET['keyword'] に代入したのち search.php を実行する機構を持つことになります。 search.php の実行は,keyword_hoge.php から search.php を include することで可能なはずです。 もしくは keyword_hoge.php を内部リダイレクトによって search.php?keyword=hoge へ割り振ることで可能になります。 『keyword_hoge.php にアクセスしても search.php?keyword=hoge が実行されない』ときの状況は具体的にはどのようなものでしょうか。 404 ステータスが返されるようであれば,keyword_hoge.php がファイルとして存在していないことになっているので,keyword_hoge.php を作成する必要があります。 フロントコントローラを用いている場合,keyword_hoge.php を有効な URI として登録する必要があります。 search.php が呼び出されているのに期待した実行結果を返さない場合,アルゴリズムの修正が必要です。 どのような修正が必要かはわかりませんが,想像するに "kewyword" というタイポが修正すべき点かもしれません。 余談です。 Google は,クエリを使うべき場面では見せかけの静的 URL を用いないことを推奨していた気がします。 search.php?keyword=hoge の正しく理解できるクローラを開発するので,余計な独自ルール(keyword_hoge.php が search.php?keyword=hoge に対応する,などの)を持ち込むなと言っていたのです。 rel="canonical" 属性の使用を提唱するのはこれが理由だったように思います。 つまり,クエリ付きの動的 URL でも閲覧者がいればインデックスされるはずだから,余計な苦労をして独自ルールや重複コンテンツを作るのには私は賛同できないということです。 "keyword_うどん.htm" を作るより,クエリをうまく減らす工夫を考えたほうがずっといいかもしれません。 &medical=1 などは一見意味がよくわからないので,指定無しの場合はデフォルト値をうまく使うなどです。 一意見としてご参考までに。

参考URL:
https://support.google.com/webmasters/answer/139394?hl=ja
04106972
質問者

お礼

ご回答ありがとうございます。 そして、ご丁寧に長文ありがとうございます。 >もしくは keyword_hoge.php を内部リダイレクトによって search.php?>keyword=hoge へ割り振ることで可能になります。 正規表現 によるタイプミスでしたが、 以下のような実行方法として手段は間違っていないでしょうか? RewriteEngine ON RewriteRule keyword_([^\/]+)\.php$ \/hoge.com\/search\.php\?keywords=$1 [L] また、ご指摘いただきました以下の件でございますが、 >Google は,クエリを使うべき場面では見せかけの静的 URL を用いないこと>を推奨していた気がします。 存じ上げておりますが、どのような手段をとっているのか気になって 質問させていただいた次第です。 先の例であげましたジョブセンスなどは、求人の詳細ページのテキスト情報からsolrなどで全文検索を行い、自作の辞書にマッチしたワードのURLを生成しているのかと考えているのですが、いかがでしょうか? ご意見頂戴できれば幸いです。

関連するQ&A

  • htaccess.サブディレクトリURL非表示

    お世話になります。 以下のようなサイトがあるとします。 http://hoge.com/index.php ←ログインフォーム http://hoge.com/aaa/index.php ←会員用サイト http://hoge.com/bbb/index.php ←非会員用サイト 最初のアクセスは必ず/index.phpが受け取り、ログイン判定後/aaaか/bbbにリダイレクトします。この時に、aaaやbbbをURLに表示させない方法はあるのでしょうか。 よろしくお願いいたします。

  • urlの変換について

    アクセス元を表示したいので、 検索エンジンなどのURLを下記のように、 長いURLを短い物に変換して表示したいのですが、 www.google.com/search?hl=ja&lr=lang_ja&ie==AC%E3%83%B3%E3%82%B... ↓ www.google.com/ 何かよい変数などは、ありますでしょうか?

    • 締切済み
    • PHP
  • URLの拡張子の「?」の意味はなんでしょうか。

    はじめまして。インターネット閲覧をしていると、URLの拡張子に、「.php?」や、「search?」のように、?が付く、長~いURLがあります。この、?の意味を教えていただけませんでしょうか。よろしくお願いいたします。いろいろな検索エンジンで、検索しましたが、「?」は、キーワードからはじかれてしまうのか、検索できませんでした。

  • 文字コードを変換したURLを作成する

    こんにちは、色々試してみたのですが私の実力では駄目でした・・・ご教授お願いします。 フォームに入力されたテキストを文字コード変換して、URLに埋め込みたい。 具体的には、オークファン(http://aucfan.com)で検索した結果のURLを作りたい。 例えば、オークファンで「あいうえお」と検索したい場合は、以下のURLになります。 http://aucfan.com/search1/smix-q~a4a2a4a4a4a6a4a8a4aa-tl30d-ot1-vmode_0.html このようなURLを生成したいのです。 ユーザーがフォームに検索したい文字を入力すると、オークファンのURLが作られてアクセス出来る様にする。 私のサイトはUTF-8で書いています。このコードは変えずに実現したいです。 オークファンの文字コードは、EUC-jp $keyword = mb_convert_encoding(フォームに入力された文字,"EUC-jp","utf-8"); と変換して、 $aucfan_url="http://aucfan.com/search1/smix-q".$keyword."-tl30d-ot1-vmode_0.html"; としても、$keywordの部分が、「~a4a2a4a4a4a6a4a8a4aa」とならず、文字化けしてぐちゃぐちゃの文字になってしまいます。 分かる方いましたら、ご教授お願い致します。

    • ベストアンサー
    • PHP
  • 検索のときのURLについて

    検索のときのURLについて教えてくださいませm(__)m たとえばグーグルで 男前 と検索したいとき直接検索窓に 男前 と入力すると http://www.google.com/search?hl=ja&q=%E7%94%B7%E5%89%8D&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=lang_ja アドレスバーには結構長いURLが表示され、検索結果が出てきます。 でも直接アドレスバーに下記のようにURLを入れても http://www.google.com/search?hl=ja&lr=lang_ja&q=男前 ちゃんと検索されるんですね。 つまりお知りのほうの%E7%94%B7%E5%89%8D&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=lang_jaを日本語に置き換えてアドレスに入力しても検索されます。 ヤフーでもできるんでしょうか? たとえばやはり 男前 なら ヤフーだと http://search.yahoo.co.jp/search?fr=slv1-tbtop&p=%c3%cb%c1%b0 に なります。 これを http://search.yahoo.co.jp/search?fr=slv1-tbtop&p=男前 と 入力するとぜんぜん違う表示になってしまいます(^^; %c3%cb%c1%b0 の部分を日本語に変えてアドレスバーに入力 しても検索はできません。 ヤフーにはグーグルみたいなやり方はないんでしょうか? ご存知の方がいましたら、よろしくお願いいたしますm(__)m

  • ちょっと複雑なURL分解について

    http://hoge.com/test.php?mode=link&id=3& url=http://hogehoge.com/ (表示上の問題でURLを途中で改行しています) 上記のようなURLを取得($_GET)した場合に、URLを分解して下記の値を得るスクリプトを作成しています。 $mode値:link $id値:3 $url値:http://hogehoge.com/ これだけであれば特に悩む必要はないのですが、問題は$url値に以下のようなデータが与えられた場合です。 http://hoge.com/test.php?mode=link&id=3& url=http://hogehoge.com/index.php?mode=abc&id=123 (表示上の問題でURLを途中で改行しています) このようなURLを取得($_GET)した場合に、以下の値を得るにはどう処理すれば良いのでしょうか。 $mode値:link $id値:3 $url値:http://hogehoge.com/index.php?mode=abc&id=123 どなたか詳しい方がいらっしゃいましたら、ご教授お願い致します。

    • ベストアンサー
    • PHP
  • URLを自分で変換したい。

    サーバーはロリポップを使用しています。 アフィリエイトURLをメールマガジンにて配信しているのですが、 出来れば自分の使用しているASPを知られたくないため アフィリエイトURLを変換したいです。 検索してみると多く出てきます。 http://www.google.com/search?hl=ja&q=URL+%E5%A4%89%E6%8F%9B&lr= これらのURL変換や圧縮は、cgiなどで作る事が可能なのでしょうか? 自分の理想のアフィリエイトURLは http://自分のドメイン.com/affiliate 上記のように独自ドメインでURL変換したいです。 ご存知の方は教えて頂けると幸いです。 よろしくお願い致します。

  • 簡単URL

    http://www.***.com/user/***2/ というURLのリクエストに対して、 http://www.***.com/user/test.php?id=***2 の結果を返すように設定したいです。 どうやったらできるんでしょうか。 ご教授ください。 ちなみに調べようと思ったのですが、どんなキーワードで調べればいいかすら分かりません。 「○○って言葉で検索してみ」みたいなアドバイスでもいただければ幸いです。 よろしくお願いします。

    • 締切済み
    • PHP
  • 動的URLのサイト内検索について

    サイト内検索を設置したいのですが、 動的URL部分の検索がうまくいきません。 どうすればよいでしょうか? ■試したこと 無料で配布されている「Web Search(Web Liberty)」、「PHP Search(PHP Labo)」、「msearch」をそれぞれ設置してみたのですが、何れも通常のphpページの検索結果は反映されるものの、動的URL部分の検索結果phpページが反映されません。 ※動的URL…details.php?id=1 みたいなイメージです。 なんで反映されないのかがよく分かりません。 「通常のPHPファイル」「動的URLを生成するPHPファイル」に違いはあるのでしょうか? ・通常のPHPファイルは、ローカルファイル? ・動的URLは、リモートのファイル? そもそもPHPはサーバー側で生成される(?)ので、通常のPHPファイルだろうが、動的URLだろうが、同じだと思うのですが、なんで、挙動に違いが出るのか(動的URL部分が反映されないのか)が分かりません。 あるいは、動的部分にAJAXも一部利用しているので、その影響でしょうか? 他の手段として、Googleを利用するぐらいしか思いつかないのですが、 ページをなかなかインデックス化してくれないため、 何か違う方法を探しています。 「動的URL部分のサイト内検索」を設置するに辺り、注意した方がよい点(そもそもどういう風に考えればよいか)や、何かよい方法等、この質問見て気がついた点があれば、アドバイスをよろしくお願いします。

    • ベストアンサー
    • PHP
  • パラメータの前にスラッシュ

    example.com?hoge=1・・・① example.com/?hoge=1・・・② 上記URLで2種類のURLの違いは何でしょうか。 あるサイトに最初にアクセスした時は example.com/keyword?anyword=hoge の形式でしたが、 本日アクセスしたら、 example.com/keyword/?anyword=hoge の形式で keywordの前にスラッシュが付いたものに変わっていました。 なぜ、このような現象が起きたのでしょうか。 また、上記のURL①と②はアクセスしても同じ検索結果でした。

    • ベストアンサー
    • PHP