mod_rewriteを使った静的URLに対応してほしいです

こんな機能をつけて欲しい、こんなマニュアル(又はサンプル)が欲しい、CMSDのサイトにこの説明が欲しい、などなど、今後のご要望についてなんなりとお寄せください。
すぐに対応できるとは限りませんが、極力検討させて頂きます。
返信
ななし

mod_rewriteを使った静的URLに対応してほしいです

投稿記事 by ななし » 2005年5月12日(木) 11:42

少し使ってみました。で、要望を1つ。

やりたいことは、mod_rewriteで、
http://servername/nikki.php?eid=00001

http://servername/nikki/eid/00001.html
のようなURLでアクセスするようにしたいのです。

リファレンスを見ると、リンクのURLを作るときに
href="mypage/eid/{@id}.html"
とかすればできそう(試してません)ですが、
できれば{@href}っぽいもので、
"?eid=00001"でなくて"/eid/00001"みたいなのを
返してくれるものがあると便利です。

結構ほしい人いると思います。

webmaster
Site Admin
記事: 1451
登録日時: 2004年12月10日(金) 10:09

Re: mod_rewriteを使った静的URLに対応してほしいです

投稿記事 by webmaster » 2005年5月12日(木) 14:00

 webmasterです。

 なるほど!確かにmod_rewriteを使った場合は、確かに@hrefは使えないですね・・。
 今のところは「href="mypage/eid/{@id}.html"」が唯一の方法に思えます。

 問題になるのはグループ絞込みなどを使っていて、eid以外にもパラメータが
ある場合でしょうか(単一エントリ表示で絞込みを使うことはめったにないとは
思いますが)。

 一度、「{@id}.html」をお試しくださいませ。

ななし

Re: mod_rewriteを使った静的URLに対応してほしいです

投稿記事 by ななし » 2005年5月12日(木) 21:38

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

静的URLはSEO的に重要なので、是非検討お願いします。

既存CMSとの差別化にもなるかと思います。

webmaster
Site Admin
記事: 1451
登録日時: 2004年12月10日(金) 10:09

Re: mod_rewriteを使った静的URLに対応してほしいです

投稿記事 by webmaster » 2005年5月12日(木) 23:29

 webmasterです。

 ななしさんのご要望を読んで、確かにSEO的に重要ですし、その機能があれば
便利な人もいらっしゃるだろうということでいろいろと検討していたところ、
いくつか気づいた事がありました。

 例えば、

 http://xxx.xxx.xxx/nikki.php?eid=00001

 というURLを、mod_rewriteを使って

 http://xxx.xxx.xxx/nikki/eid/00001

 というURLからアクセスできるよう変換するとします。

 すると、URL階層が深くなってしまう為、相対パスで指定している画像などが
全て表示されなくなってしまいます。

 ということは、以下のような変換の方が良いのかもしれません。

 http://xxx.xxx.xxx/nikki.00001.html

 これなら、URL階層も変わりませんし、見た目は静的に見えます。

 .htaccessでは、次のように指定します。

コード: 全て選択

RewriteEngine on
RewriteRule ^([0-9A-Za-z_]+)\.([0-9)]+)\.html$ $1.php?eid=$2 [L]
 また、デザイン定義側では次のように指定します。

コード: 全て選択

  <a href="nikki.php{@href}">エントリを表示</a>
 としていたところを、

コード: 全て選択

  <a href="nikki.{@id}.html">エントリを表示</a>
 のように変更します。

 「.00001.html」までを自動で出力する、例えば「@rwhref」のような属性を
追加することも考えた(というか実際に実装までしてみた)のですが、
URLをどのように静的ページのように見せかけたいかは人によって違うかも
しれないと考えて、とりあえず保留しました。

 実際、@rwhrefのようなものを使ったところで結局デザイン定義ファイルを
変更するのには変わりがないわけで、それならば方法だけどこかに記述する
というでどうだろうと考えております。

 ななしさん他、ご意見をお持ちの方がいらっしゃいましたらよろしくお願い
致します。

かこ

Re: mod_rewriteを使った静的URLに対応してほしいです

投稿記事 by かこ » 2005年11月11日(金) 07:46

xmlとか本当にわかってないので、恥ずかしい質問をしていたら申し訳ありません。

質問なのですが、上記を試してみたところ、詳細ページが表示されなくなってしまいました。それまではうまくいっていたのですが。。

.htaccessとデザイン定義のリンクの書き方を変える以外に修正すべき箇所はありますか?

webmaster
Site Admin
記事: 1451
登録日時: 2004年12月10日(金) 10:09

Re: mod_rewriteを使った静的URLに対応してほしいです

投稿記事 by webmaster » 2005年11月11日(金) 09:28

 webmasterです。かこさん、ご連絡ありがとうございます。

 いちおう、上記の方法は弊社で実際に試した方法で、現在でも問題なく動作
しているようです。

 「表示されなくなった」とは、IE等で「ページが見つかりません」となってしまう、
という認識でよろしいでしょうか?

 .htaccessとデザイン定義のリンクを変える以外には特に問題ないはずなの
ですが、何か他の条件がうまく合っていないのかもしれません。

 デザイン定義の変更後のリンク部分を教えて頂いてもよろしいでしょうか?

 例えば、

 <a href="abc.php{@href}">詳細を表示</a>

 から

 <a href="abc.{@href}.html">詳細を表示</a>

 に変えた、などです。
 変更後のデザイン定義の中身を全てコピー&ペーストして頂いてもOKです。

 以上、大変お手数ですがよろしくお願い致します。

aoao
記事: 1
登録日時: 2007年11月07日(水) 17:07

Re: mod_rewriteを使った静的URLに対応してほしいです

投稿記事 by aoao » 2007年11月07日(水) 17:41

はじめまして。
クライアントのCMS導入検討で、いいサービスをみつけたと思い、早速テストさせていただいております。

順調にチュートリアルをこなしたのですが、
この静的URLの表示が、うまくされません。

 <a href="nikki.php{@href}">詳細を表示</a>

 から

 <a href="nikki.{@id}.html">詳細を表示</a>

 に変更し、URLは、間違いなく表示されるのですが、NOt Foundになります。

config直下にある「.htaccess」にも、上記に記載されているものをそのままコピペしているのですが、置く場所が違うのでしょうか?

よろしくお願いします。

webmaster
Site Admin
記事: 1451
登録日時: 2004年12月10日(金) 10:09

Re: mod_rewriteを使った静的URLに対応してほしいです

投稿記事 by webmaster » 2007年11月08日(木) 16:29

 aoaoさん、はじめまして。ご質問ありがとうございます。

 このmod_rewirteの機能を有効にする為の .htaccess は、そのサイトのルート
に設置して下さい。

 configフォルダにある .htaccessは、configフォルダ用のものなので、こちらは
そのままにしておいて下さい。

 .htaccessは、そのファイルを置いたフォルダより下の階層にのみ影響する為、
configフォルダの .htaccessに記述を追加しても、ルートの各 .php ファイルには
影響しないのです。

 結構ここでつまづかれる方がいらっしゃるようなので、今後 .htaccess関係の
事を書く際には、「configフォルダ内の .htaccessファイルではなく、ルート
直下に新しくファイルを作成してください」と追記しようと思います。

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

bcacsato
パワーユーザー
記事: 233
登録日時: 2005年11月27日(日) 14:05

Re: mod_rewriteを使った静的URLに対応してほしいです

投稿記事 by bcacsato » 2011年3月30日(水) 16:54

 

コード: 全て選択

RewriteEngine on
RewriteRule ^([0-9A-Za-z_]+)\.([0-9)]+)\.html$ $1.php?eid=$2 [L]
こちらの.htaccessですが、
「nikki.00001.html 」ではなく「nikki00001.html 」というような形にしたいと思い、
下記の通り変更してみました。

コード: 全て選択

RewriteEngine on
RewriteRule ^([0-9A-Za-z_]+)([0-9)]+)\.html$ $1.php?eid=$2 [L]
しかし、「nikki00001.html 」と入力して表示させても、「nikki.php?eid=00001 」ではなく、
パラメータがない形「nikki.php」が表示されてしまうようです。

そのため、下記のように変更してみたりもしましたが、やはり同様です。

コード: 全て選択

RewriteEngine on
RewriteRule ^(A-Za-z_]+)([0-9)]+)\.html$ $1.php?eid=$2 [L]
mod_rewirteのことが分からないため、的はずれな質問かもしれませんが、
よい方法がありましたら、ご教示いただけますと幸いです。

tsu
パワーユーザー
記事: 208
登録日時: 2006年1月16日(月) 12:00
お住まい: さいたま

Re: mod_rewriteを使った静的URLに対応してほしいです

投稿記事 by tsu » 2011年4月12日(火) 00:05

こんばんは

ちょっと修正です

コード: 全て選択

RewriteRule ^([0-9A-Za-z_]*)([0-9]{5})\.html$ $1.php?eid=$2 [QSA,L]
RewriteRule ^([0-9A-Za-z_]*)\.html$ $1.php?eid=$2 [QSA,L]
*PHP5.3だとCMSDがエラー吐くんでURL消しました

ややこしくなると思うので一定のルールを決めておいた方がいいかもですね
ファイル名は数字を含まないとか ファイル名_クエリとか
あと例外の処理とか


でもあれですね、これじゃnews_893.htmlとか投げるとおかしなことになっちゃうな
やっぱ_とかで区切って明確にしておいた方が良さそうな気がします
最後に編集したユーザー tsu on 2011年5月14日(土) 21:41 [ 編集 1 回目 ]

bcacsato
パワーユーザー
記事: 233
登録日時: 2005年11月27日(日) 14:05

Re: mod_rewriteを使った静的URLに対応してほしいです

投稿記事 by bcacsato » 2011年5月11日(水) 19:27

> tsuさま
ご回答ありがとうございます。(返信が遅くなり申し訳ありません。)
大変参考になりました。おかげ様で解決しました。

> webmasterさま
リンクの際、{@href}ではなく{@id}という形になってしまったため、
グループによる絞り込み条件が引き継がれなくなってしまいました。
絞り込み条件を継承したままリンクする方法はありますでしょうか?

返信