• ベストアンサー

mod_rewriteとはなんですか?

サイト作成中に"mod_rewrite"という言葉が出てきたんですが、調べてみてもイマイチわかりません。mod_rewriteとは何なんでしょうか?これを利用するとどんな効果があるんでしょうか? 詳しく教えていただけませんでしょうか?

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

  • ベストアンサー
  • Lean
  • ベストアンサー率72% (435/603)
回答No.2

mod_rewriteという名前の通り、このモジュールを使用する事によってアクセスしてきたURLを書き換える事が出来ます。 例えば、サーバの移転でサイトのURLが変わったとします、普通、「サイトが移転しました新しいURLは~です」というメッセージと新しいURLを載せて置き、refreshタグでさらに新しいURLに飛ばすとかしますよね。 この時、このrewriteモジュールを使用すると古いサイトのURLを新しいサイトのURLに書き換えてしまって直接新しいサイトに飛ばす事が出来ます。 例) http://www.oldsite.exsample.net/http://www.newsite.exsample.net/ また、同様にサイトの移転でなくともサイトのページ構成の変更を行った場合に、旧URLでもURLを新URLに書き換える事によってエラーなくアクセスさせる事も出来るわけです。 例) http://www.exsample.net/old/index.htmlhttp://www.exsample.net/new/index.html まあ、例としては単純なものを上げましたが、書き換えのルールの書き方によってはいろいろな事が出来ます(ユーザ認証と合わせてアクセスしたユーザ毎に表示するページを変えるとか、直リンクを禁止にするとか等)。

参考URL:
http://www.net-newbie.com/trans/mod_rewrite.html
kuwabara0
質問者

お礼

有難うございました。 大変勉強になりました。

kuwabara0
質問者

補足

みなさん、わかりやすい説明ありがとうございます。 レンタルサーバなどを借りていて、mod_rewriteが使える場合は、どのようにして使うんでしょうか?

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • Lean
  • ベストアンサー率72% (435/603)
回答No.3

>レンタルサーバなどを借りていて、mod_rewriteが使える場合は、どのようにして使うんでしょうか? .htaccessファイルの使用を許可されているならば、この中で書き換えを行うという設定を行い、さらに書き換えルールを設定する事によって書き換えを行う事が出来ます。

全文を見る
すると、全ての回答が全文表示されます。
  • rentahero
  • ベストアンサー率53% (182/342)
回答No.1

クライアントが送信してきたURLをサーバー側で変更して処理するためのモジュールです。 http://httpd.apache.org/docs/misc/rewriteguide.html http://httpd.apache.org/docs-2.0/misc/rewriteguide.html 強烈に奥が深いです。なんというかほぼ何でもできる感じなんですよね…。

参考URL:
http://httpd.apache.org/docs/misc/rewriteguide.html, http://httpd.apache.org/docs-2.0/misc/rewriteguide.html
全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • mod_rewriteを使えるようにするには?

    LinuxのOS Fedora Core4でサーバを立てています。 .htaccessでmod_rewriteを使用したいのですが、デフォルトでのApach2.054インストールでは使用できないようです。 使用するにはhttpd.confファイルの中に LoadModule rewrite_module modules/mod_rewrite.so と AddModule mod_rewrite.c の行が必要だそうですが、 AddModule mod_rewrite.cの行が見当たりません。 どうやってインストールできるでしょうか?

  • mod_rewrite について

    MVC モデルで web app を作る場合、mod_rewrite で url を「書き換え」て、1つのソースコードですべてのアクセスを処理する、 みたいなことはよくやられると思うのですが、 巷の情報を漁ってみると、 「mod_rewrite では post で渡されたパラメタを取得できない」 とのことでした。 でもこれって、リダイレクトした場合に、そうなることがありえるって話ですよね? mod_rewrite って、url を「書き換え」てるだけじゃないんでしょうか? url を書き換えて、リダイレクトまでされているんでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • httpsでmod_rewriteができない

    はじめまして。 Linux環境で、apacheのhttp.confにmod_rewriteを記載し、httpsとhttpを切り替えたいと思っています。 httpd.confに以下のように記述しています。 <IfModule mod_rewrite.c> RewriteEngine on  #(1)httpで/aaaa/bbbbにアクセスされたときにhttps://~に変えたい RewriteCond %{REQUEST_URI} ^/aaaa/bbbb RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R]  #(2)httpsで/cccc/ddddにアクセスされたときにhttp://~に変えたい RewriteCond %{REQUEST_URI} ^/cccc/dddd RewriteCond %{HTTPS} on RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R] </IfModule> 上記(1)のhttpでのアクセス時には、mod_rewriteが効いてhttpsへ切り替えられるのですが、 上記(2)のhttpsでのアクセス時には、mod_rewriteが効いていないようでhttpへ切り替えられません。 rewriteログを見てみると、当サイトへhttpでアクセスした場合にはログが出力されますが、 httpsでアクセスした場合には出力されません。 そもそもhttpsでのアクセスの場合にhttpd.confのmod_rewriteが効いていないようです。 ですが、これに対しどこを調査すべきかが分かっていません。 SSLの設定自体は出来ていると思っていて、 https://xxxx.jpのようにアクセスするとちゃんとページが表示されます。 どの当たりに問題がありそうでしょうか? 解析のヒントを頂けたらと思います。 宜しくお願い致します。

  • mod_rewriteが効かない!

    サーバの運用上、mod_rewriteを使う必要が出来たので設定してみたのですが効きません。 FreeBSD4.11+Apache1.3.33で httpd.confファイルに直接書き込んで試しています。 LoadModule rewrite_module modules/mod_rewrite.so AddModule mod_rewrite.c のどちらも書いてあるにもかかわらず、下記のテスト設定を試してみたらローカルIPからアクセス出来てしまいます。 RewriteEngine on RewriteCond %{REMOTE_ADDR} ^192\.168\.1\. ←ローカルネットワークのアドレス RewriteRule ^.*$ - [F] どのようにしたらいいですか? アドバイスお願い致します。

  • mod_rewriteの書き方について

    mod_rewriteの書き方について mod_rewriteの書き方が分からず苦戦しています。 以下のようなURLを http:www.hogehoge.cooom/result?cat=12&cat=2&dog=1&dog=3&dog=10 ↓ http:www.hogehoge.cooom/result/cat=12/cat=2/dog=1/dog=3/dog=10 このように書き換えたいのですが可能でしょうか。 途中の「&」の数は固定ではなく変動します。 もし可能であれば、ご教授いただけると助かります。

    • ベストアンサー
    • PHP
  • mod_rewriteで動的ページを静的に変更

    PHPのカテゴリで同じ質問をしているのですが、3日目になっても、回答がいただけないので、同じ質問をさせていただきます。 動的ページを静的なページにしようとして、mod_rewriteの勉強をはじめようとしているのですが、疑問が出てきたので、確認させてください。 「何を当たり前のことを言ってるんだ。」と思われるかもしれませんが、教えて下さい。 htaccessからmod_rewriteを用いて、 (1)sampl.php?mod=1&id=3 を見かけ上、(2)sample/mod_1/id_3.html のようにすることは、mod_rewriteでできるということですが、 サイト全体を静的に見せようとしたら、プログラム側の呼出し(サイト内のリンク)を、(1)の形式から(2)の形式に全て変更しないといけないのでしょうか? htaccessだけをいじれば、静的にできると思い込んでいたのですが、 プログラムを変更しないといけないとなると、覚悟が必要なもので。。。

  • mod_rewriteについて

    初めて質問させていただきます。 よろしくお願いします。 Solaris8にてApacheを動かしています。 【問題】「HTTP TRACE」を拒否するためにmod_rewriteモジュールをインストールしようと思うのですがうまくいきません。 【詳細】mod_rewriteをインストールするとmod_soが消えてしまい、mod_soを入れなおすとmod_rewriteが消えてしまいます。  ./configure --enable-module=so --enable-module=rewrite とすると両方が入るみたいなんですが、 /usr/local/apache/bin/apachectl startssl としても、  Syntax error on line 206 of /usr/local/apache/conf/httpd.conf: Cannot load /usr/local/apache/libexec/libssl.so into server: ld.so.1: /usr/local/apache/bin/httpd: 重大なエラー: 再配置エラー: ファイル /usr/local/apache/libexec/libssl.so: シンボル ap_global_ctx: 参照シンボルが見つかりません。 /usr/local/apache/bin/apachectl startssl: httpd could not be started と、こんなエラーが出てhttpdがスタートできません。 どこに原因があるためのエラーなのでしょうか??

  • Apacheでmod_rewriteを利用して複数ドメインを1個ですませる

    Apacheでmod_rewriteを利用して複数ドメインを1個ですませる方法を探しています。 rewriteマスターはいませんか? 現在virtualhostが数百ありますが、再起動速度が遅いこと、メモリ消費量が多いことから、1個ですませたいと思ってします。 <virtualhost></virtualhost>内でrewriteを利用して1個ですませる設定を教えていただけないでしょうか。 mod_vhost_aliasを考えましたが、他の設定も入れたいのでmod_rewriteでどうにかできないかと思っています。 教えていただけないでしょうか。

  • mod_rewriteについて教えてください。

    mod_rewriteについてお願いします。 「a」と「b」というフォルダにそれぞれ「index.html」「test.html」が入っています。「a」と「b」で「index.html」「test.html」の内容はちがいます。 わたしが一番望んでいるのは http://example.com/a/以下にアクセスがあった場合 http://example.com/b/以下にリダイレクトさせるというものです。 例) http://example.com/a/test.htmlにアクセスがあったらhttp://example.com/b/test.htmlにリダイレクト。 ------------------------------------------------------------ Options +FollowSymLinks AddHandler cgi-script htaccess <IfModule mod_rewrite.c> RewriteEngine on RewriteRule ^/a/$ /b/$1 [R=302,L] </IfModule> ------------------------------------------------------------ としてみましたが、リダイレクトされません。 ちなみに RewriteRule ^$ /b/$1 [R=302,L] と書くと、http://example.com/にアクセスがあった場合 http://example.com/b/にリダイレクトされましたので mod_rewriteには対応しております。 ご教授のほど、よろしくお願いいたします。

  • mod_rewriteについて

    SEOに効果があるのかも賛否両論ですが.htaccessに以下のような指定で 拡張子がphpのものをhtmlに変更しました。 RewriteRule ^([A-Za-z0-9]+).html$ $1.php [L] ○○.htmlにアクセスがあれば実際には○○.phpを表示させるという ことで成功はしたのですが○○.phpにアクセスしても普通にページが 表示されてしまいます。 ロボットがきてhtmlとphpと同内容があればなにか問題があるのかと 思い(根拠がない勝手な妄想ですが)○○.phpにアクセスがあれば実際に 表示するのは○○.phpですが○○.htmlへリダイレクトさせたいと 思っているのですがどうやれば可能でしょうか? また実際にサーバーにアップしてあるファイルの拡張子はphpなので すがmod_rewriteでこのような設定をしただけでロボットにhtmlとして 認識されるのでしょうか? mod_rewriteは初めて使うもので希望の動作に必要性があるのかすら よくわからない状況なのですが詳しい方がおりましたら是非ご教授を お願い致します。