• ベストアンサー

htaccessでURLを階層式の短縮URLに

htaccessに関する質問です。 GETパラメータのついたURLを、 ディレクトリ式の短縮URLにしたいです。 例) http://〇〇〇.jp/detail.php?no=123456  ↓以下のように http://〇〇〇.jp/123456/ htaccessにどのように記述すればよいでしょうか。 簡単な説明もいただけるとうれしいです。 ご指導ください。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • t_ohta
  • ベストアンサー率38% (5081/13278)
回答No.1

RewriteEngine on RewriteRule ^/([0-9]+)/$ /detail.php?no=$1 [L] って感じですかね。 「RewriteEngine on」でmod_rewriteというURL書換機能を有効にします。 「RewriteRule」は書換ルールの設定で、第1引数は閲覧者が入力するURLを正規表現で記述していて、パスがスラッシュで始まってスラッシュで終わり、中に数字が1文字以上入っているというパターンを指定してます。 第2引数は実際に動作する際のURLで、$1 と言うのは第1引数の正規表現で1個目のカッコで括られた部分にマッチした値で置き換えるという意味です。 第3引数の [L] は書換ルールの処理条件で、この書換ルールにマッチしたら書換処理を終了するという意味です。 mod_rewrite で検索すると沢山解説ページが見つかると思います。

osiete4646
質問者

お礼

とても分かりやすいです! やさしい言葉で解説いただきましてありがとうございます!

関連するQ&A

  • 正規表現を使った.htaccessの記述に関して

    「http://samplesite.jp/detail.php?no=1」⇒「http://samplesite.jp/1」 「http://samplesite.jp/detail.php?no=2」⇒「http://samplesite.jp/2」 .htaccessで上記のようなリダイレクトをしたいです。 「http://samplesite.jp/detail.php?no=1」へアクセスした際に「http://samplesite.jp/1」のURLにリダイレクトし、その上で「http://samplesite.jp/detail.php?no=1」の内容を表示するにはどうすれば良いでしょうか?

    • ベストアンサー
    • PHP
  • htaccessでURLを変えたい

    htaccessでURLを変えたい http://www.sample.jp/test/php/ex.php というURLをhtaccessで http://www.sample.jp/ex.php に変換したい場合、どのようにすればよいのでしょうか。 いろいろ調べたのですが、動的URLを静的URLに変換等はできたのですが、 上記のように変更するやりかたはわかりませんでした。 上記URLの変換は無理なのでしょうか。

  • .htaccessのURL書き換えができません

    print.php ---- $i=$_GET['que']; $fname= file/$i.'.php'; include 'header.php'; include $fname; include 'footer.php'; ---- というphpファイルがあります。 たとえば、localhost/print.php?que=cat にアクセスすると  header.php、file/cat,php、footer.phpをあわせたものが出力されることを想定しています。 最近、.htaccessというものを設定することによってURLを書き換えることができると知り、 localhost/cat.phpにアクセスしてもheader.php、file/cat,php、footer.phpをあわせたものが出力されるように、htaccessファイルに ---- RewriteEngine On RewriteRule ^([a-zA-Z0-9_-]+)\.php$ print.php?que=$1 RewriteRule ^([a-zA-Z0-9_-]+)/\.php$ print.php?que=$1 ---- と記述しました。 localhost/cat.phpにアクセスすると、localhost/print.php?que=catに書きかえられるので、print.phpにque=catがGETされ、 header.php、file/cat,php、footer.phpが出力されると期待したためです。 しかしいざ実行してみると、 failed to open stream: No such file or directory とエラーが出てきます。 原因を探ってみたところ、echo $fname;としてみると page.phpとのみ出力されることから、どうやらqueが正常にgetされていないようです。 自分ではこれ以上の原因と対策がわからないので、localhost/cat.phpと入力するとprint.phpにque=catをGETさせるような方法を教えてください。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • .htaccessについて教えてください。

    wwwをありに統一したいですが。 自動生成したURLの書き方を教えてもらえますか? .htaccessでのURL制御 RewriteRule ^([0-9]+).html$ detail.php?code=$1 [L] 自動生成したURL http://www.***.jp/details/000000.html

    • ベストアンサー
    • PHP
  • .htaccessで動的URLを静的化

    動的URLを静的化したいと考えています。 ネットで調べるとよくあるサンプルは RewriteRule ^/dir/([0-9A-Za-z]+)/([0-9A-Za-z]+)$ /dir/index.php?a=$1&b=$2 という風に「静的なURLにアクセスして、内部ではパラメータ付きのURLでの処理をさせる」 というパターンが多いのですが、私がやりたいのは逆で「動的URLにアクセスがあれば静的URLにリダイレクトをさせる」というものです。 理由は、 ・すでにサイトがある程度できあがっていて、既存のURLもある程度Googleにインデックスされている ・パラメータの組み合わせパターンが色々あるため上記のようなルールで対応できない などです。 そこで http://xxx.com/dir/index.php?a=01&b=02 や http://xxx.com/dir/index.php?b=02&c=03&x=999 といった動的URLを http://xxx.com/dir/a-01/b-02/ http://xxx.com/dir/b-02/c-03/x-999/ RewriteRuleを使ってこのような形で一旦301リダイレクトさせ、これをPHPの内部処理でパラメータ付きURLに戻すことによって既存のロジックを生かしたままURLを静的化できないかと考えています。 RewriteRuleの記述を色々書き換えて試してみたのですが、どうしてもやりたいようなURLの変換ができません。 どのように記述すればよいか、ご教授下さい。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • htaccessを教えて下さい。

    借りているサーバーが/で終わるURLだとディレクトリが丸見えになってしまいます。index.htmがあると読み込みますがshtmだとディレクトリを表示してしまいます。この場合2つの条件を記述したhtaccessはどう記述すればいいでしょうか?

    • ベストアンサー
    • CGI
  • htaccessでURLの書き換えをする際の書き方

    htaccessでURLの書き換えをする際の書き方を教えてください <元のURL> http://ドメイン/あいうえ <書き換え・リダイレクト先のURL> http://ドメイン/test.php?url=あいうえ 以上のように元のURLの「/」以降の文字列をPHPのパラメータとして、リダイレクトさせる方法を教えてください。

    • 締切済み
    • PHP
  • パラメーター付きのURLをリダイレクトしたい

    お世話になります .htaccess でリダイレクトを行いたいのですが、パラメータ付きのURLの為かリダイレクトができません。 .htaccess内の記述↓ redirect 301 /aaa/bbb.php?N=1 http://www.aaa.com/index.html 「?=N1」の部分を取れば問題なくリダイレクトします パラメータ付きのURLはリダイレクト可能でしょうか? よろしくお願いいたします

  • .htaccessでRewriteRule

    .htaccessでパラメータ付のアドレスにRewriteRuleしたいのですが。 例えば test.phpにアクセスされた場合、test.php?id=5 としたいのですが。 現状、下記のように.htaccessに記述したのですがうまくいきません。 RewriteEngine On RewriteRule ^test.php$ /test.php?id=5 [R=301,L] また、test.phpにはパラメータ付(test.php?id=1)でアクセスされる場合もあります。 その場合には、test.php?id=1のままにしたいのですが。 どのように記述したらよろしいのでしょうか。

  • .htaccessでの転送:転送元URL内のパラメータを削除したい

    .htaccessで、1→2に転送したいのですが、 1)http://www.hoge.jp/ie_tokyo/shop/list.asp?s_id=0033 2)http://www.hoge.jp/tokyo/shop/ 下記の記述でうまくいきません。 RedirectMatch 301 /ie_tokyo(.*) http://www.hoge.jp/tokyo/shop/ これだと、下記URLに転送されてしまいます。 http://www.hoge.jp/tokyo/shop/?s_id=0033 パラメータも削除するにはどのように記述すればよいのでしょうか。 ご存じのかたご教示いただけませんでしょうか。よろしくお願いいたします。

専門家に質問してみよう