mod_rewriteを用いた動的ページの静的ページ変換について

.htaccessに
RewriteEngine on
RewriteRule articles/([0-9]+)$ /articles.php?&item=$1
と記述して変換を試みているのですが、例えばarticles.php?&item=001とアクセスしても変換されずそのまま表示されてしまいます。
どのような対処が必要でしょうか?
よろしくお願いします。

ちなみにApache httpd.confのAllowOverrideは「All」にしてあります。

よろしくお願いします。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:2007/04/27 11:51:05
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:tokyosmash No.2

回答回数100ベストアンサー獲得回数6

ポイント100pt

>ちなみにコメント欄開放

「回答受付中にコメント・トラックバックを表示する」

という項目がありますので、そちらにチェックを入れてください。


そもそもkonorinoriさんは

RewriteRule articles/([0-9]+)$ /articles.php?&item=$1

と書くことで何を実現したいのでしょうか?


#こういう事を回答欄に書いているとkonorinoriさんのポイントが無駄になると思います。コメント欄を開放して頂ければポイントも節約できますので。

http://www.dummy.com/

(ダミー)

id:konorinori

ありがとうございました。

SEO対策について勘違いをしていたようです。

無事に動作させることができました。

親身に回答いただきありがとうございました。

2007/04/27 09:18:32

その他の回答3件)

id:tokyosmash No.1

回答回数100ベストアンサー獲得回数6

ポイント100pt

RewriteRule ^(.*)\.html$ item.php?ID=$1 [L]

これを例に説明してみます。

item.php?ID=001

これにアクセスすれば当然そのまま表示されます。

001.html

これにアクセスすればitem.php?ID=001と同じ内容のページが表示されます。

ここまででおわかりでしょうか。

articles.php?&item=001にアクセスするのではなくて、

articles/001 にアクセスするのでは?

間違っていたらすみません。差し支えなければコメント欄開放して頂きたいです。

http://www.dummy.com/

(ダミー)

id:konorinori

回答ありがとうございます。

ご指摘の通りにarticles/001でアクセスしてみたのですが、今度は「HTTP 404 - ファイル未検出

」と表示される結果となりました。

ちなみにコメント欄開放とはどのようにすればよいのでしょうか?

2007/04/26 18:13:38
id:tokyosmash No.2

回答回数100ベストアンサー獲得回数6ここでベストアンサー

ポイント100pt

>ちなみにコメント欄開放

「回答受付中にコメント・トラックバックを表示する」

という項目がありますので、そちらにチェックを入れてください。


そもそもkonorinoriさんは

RewriteRule articles/([0-9]+)$ /articles.php?&item=$1

と書くことで何を実現したいのでしょうか?


#こういう事を回答欄に書いているとkonorinoriさんのポイントが無駄になると思います。コメント欄を開放して頂ければポイントも節約できますので。

http://www.dummy.com/

(ダミー)

id:konorinori

ありがとうございました。

SEO対策について勘違いをしていたようです。

無事に動作させることができました。

親身に回答いただきありがとうございました。

2007/04/27 09:18:32
id:ito-yu No.3

回答回数323ベストアンサー獲得回数14

ポイント10pt

RewriteEngine on

RewriteRule articles/([0-9]+)$ /articles.php?&item=$1

と書くと、アクセスされたURLの末尾に articles/数字 があると /articles.php?&item=数字 がリクエストされたかのように振る舞います。

つまり、/articles.php?&item=001 にアクセスしたときにそのまま表示されるのは仕様通りです。

あなたのコンテンツ内でリンクを作成する際には /articles.php?&item=001 ではなく /articles/001 という形式で書くように気を付けなければなりません。

ところでRewriteRuleにおそらく意図していない書き間違いがあります

誤)RewriteRule articles/([0-9]+)$ /articles.php?&item=$1

正)RewriteRule ^articles/([0-9]+)$ /articles.php?&item=$1

いまのままだと /hogehogearticles/001 とかでも書き換え対象ですよ。

http://ja.wikipedia.org/wiki/%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%B...

id:felix33 No.4

回答回数343ベストアンサー獲得回数2

ポイント10pt

RewriteRule アクセスURL 転送先URL

ですね。

それと、phpを用いた動的ページの場合、.htaccessの単純な指定だけでは、

うまくいかない場合が多いです。

たとえばnucleusの似たようなケースでは、

けっこう変更するところがたくさんあるのです。

http://www.timedesign.jp/itemid-23.html

  • id:konorinori
    ありがとうございます。
    SEO対策として、動的ページを静的ページに変換するということを行いたいと思っています。
  • id:tokyosmash
    >動的ページを静的ページに

    つまり、
    www.hoge.com/articles.php?&item=001

    だとSEO的にダメだから、

    www.hoge.com/001.html

    などとしたいんですよね?
  • id:tokyosmash
    www.hoge.com/001.html
    にアクセスした時に
    www.hoge.com/articles.php?&item=001
    のページの内容を表示させたいという解釈でいいのでしょうか?


    mod_rewriteを使っても
    www.hoge.com/articles.php?&item=001
    にアクセスすれば当然そのままページが表示されます。

    mod_rewriteを使うことによって実現できるのは、本来存在しないはずの
    www.hoge.com/001.html
    にアクセスした時に
    www.hoge.com/articles.php?&item=001
    の内容を表示させるという事です。
  • id:tokyosmash
    私はホント初心者なので、もっと知識のある方が回答してくれるのが一番いいのですけど。

    Apache httpd.confの
    LoadModule rewrite_module modules/mod_rewrite.so
    はコメントアウト解除されましたでしょうか?
    コメントアウトしていないとmod_rewrite自体が動きません。
    動いているかどうかをみるにはApacheのログを見るといいようです。
    コメントアウトしていなかったら#を取って、Apacheを再起動してくださいね。


    RewriteRule ^(.*)\.html$ articles.php?item=$1 [L]

    これでどうでしょうか?
    www.hoge.com/001.html
    にアクセスすれば、
    www.hoge.com/articles.php?item=001
    の内容が表示されるはずです。

この質問への反応(ブックマークコメント)

トラックバック

  • SEO 讀懃エ「繧ィ繝ウ繧ク繝ウ譛�驕ゥ蛹 Google繧Шahoo!縺ェ縺ゥ縺ョ讀懃エ「繧ィ繝ウ繧ク繝ウ逋サ骭イ譁ケ豕 2009-06-04 01:16:03
    SEO縺ィ縺ッ縲√し繝シ繝√お繝ウ繧ク繝ウ譛�驕ゥ蛹�(Search Engine Optimization)縺ョ逡・縺ァ縲√い繧ッ繧サ繧ケ繧「繝�繝励r逶ョ逧�縺ォ縲∵、懃エ「繧ィ繝ウ繧ク繝ウ縺ョ讀懃エ「邨先
「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません