人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

.htaccessでのmod_rewrite設定。

いろいろ、参考書やネット検索で見ますが、リダイレクトしてくれません><

http://www.hoge.com/worddetail.php?tag=%E5%B1%B1%E6%9C%AC%E6%A2%93
のURLを
http://www.hoge.com/worddetail/%E5%B1%B1%E6%9C%AC%E6%A2%93
このように変えたいと思っています。


上記の場合.htaccessの中身は

AddHandler x-httpd-php5 .php .phps

RewriteEngine on
RewriteRule ^/worddetail/(.*)$ /worddetail.php?tag=$1

ではおかしいでしょうか?


『AddHandler x-httpd-php5 .php .phps』はサーバーでPHP4とPHP5が選択でき、PHP5を選択した際ドキュメントディレクトリに自動で.htaccessも作成されました。
その.htaccessに、
RewriteEngine on
RewriteRule ^/worddetail/(.*)$ /worddetail.php?tag=$1
を自分で追加したのですが・・・。
500や403エラーは出ないのですが、URLはちっとも変化しません。


Xサーバーを使っています。
よろしくお願いします。

●質問者: seadwell
●カテゴリ:ウェブ制作
✍キーワード:.htaccess 403 AddHandler httpd mod_rewrite
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● GEN111
●27ポイント

これではどうでしょう。

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^worddetail/(.*)$ worddetail.php?tag=$1
◎質問者からの返答

いつもありがとうございます。

ダメですね?。

何がいけないんでしょう・・・?


2 ● y-kawaz
●27ポイント

httpd.conf に書く場合は質問中の書き方で良いと思いますが、

.htaccess で書くなら場合はカレントディレクトリからのパスがマッチされるので頭の / が要らないんじゃないでしょうか?

RewriteEngine on
RewriteRule ^worddetail/(.*)$ /worddetail.php?tag=$1

多分↑こうしてやるとマッチすると思います。

◎質問者からの返答

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

ダメみたいです・・・。

変更前URLや変更後URLを絶対パスや仮想URLに試したり、考え付くことはすべて試しましたがダメです。

現在こうなっています。

AddHandler x-httpd-php5 .php .phps

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^worddetail/(.*)$ /worddetail.php?tag=$1 [L]

URLエラーが出るならまだしも・・・


3 ● tezcello
●26ポイント

やりたい事がわかった気がします。


> このように私の動的サイトも静的に見せたいと考えました。

これは

http://www.hoge.com/worddetail/%E5%B1%B1%E6%9C%AC%E6%A2%93

でアクセスした場合

URL表示欄は

http://www.hoge.com/worddetail/%E5%B1%B1%E6%9C%AC%E6%A2%93

で、内部的に

http://www.hoge.com/worddetail.php?tag=%E5%B1%B1%E6%9C%AC%E6%A2%...

で表示されたページが表示されます。

以上より既に実現できていますね。


問題は、

http://www.hoge.com/worddetail.php?tag=%E5%B1%B1%E6%9C%AC%E6%A2%...

にアクセスした場合、URL表示欄も

http://www.hoge.com/worddetail.php?tag=%E5%B1%B1%E6%9C%AC%E6%A2%...

のままで、リダイレクトされないということです。

この時は、rewrite の条件に当てはまりませんので、書き換えれません。

また、Rule を追加して書き換えが出来たとしても、URLの表示欄は書き会える以前のままです。

(前の例で、アクセスしたURLがブラウザのURL欄に残ったままなのと同じ事です)


RedirectMatch を使う事で、特定の条件の時のアクセス先を書き換えることが出来ます。

(ブラウザのURL欄も書き換え後のアドレスです)

ですが、クエリはクエリとして残ったままなので、削除する事が出来ません。

また、上手く使わないとループしてしまうようです。

(worddetail という同じキーワードであちらもこちらもやろうとするからでしょうか?)


自サイトからは、

http://www.hoge.com/worddetail/%E5%B1%B1%E6%9C%AC%E6%A2%93

でアクセスできるのでしょうから

http://www.hoge.com/worddetail.php?tag=%E5%B1%B1%E6%9C%AC%E6%A2%...

のようにクエリ付きでアクセスされるのは、そんなに多くないのでは?

(ひょっとするとテストしている時だけ?)

◎質問者からの返答

こんにちは。

チョット回答が難しいです^^;

ヒョットして、私のmod_rewriteが行ってくれることの考え方自体が間違っているのでしょうか?


例えば、

http://blog.myrss.jp/archives/2007/01/7_url_url_mod_r.html

に書いてある事例ですと

確かに

http://www.sfa-cms.com/word/%E6%AF%8D%E3%81%AE%E6%97%A5/%E6%AF%8...

とURL表示欄はPATH_INFO式で表示されています。

この作者はキーワードはGETしていると、別なページにはっきり書いています。


> worddetail という同じキーワードであちらもこちらもやろうとするからでしょうか?

この部分もよく解らないのですが、worddetailはキーワードでなくworddetail.phpというファイル名です。

なんか、私が説明を勘違いしていますか?


> (ひょっとするとテストしている時だけ?)

いえいえ

http://tech.bayashi.net/svr/doc/apache/mod_rewrite.html

にも

http://www.google.co.jp/support/webmasters/bin/answer.py?answer=...

にもありますように、

ロボットのクロールがよりたやすくされ、インデックスが残されたいと考えたからです。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ