mod_rewriteを使った静的URLに対応してほしいです
mod_rewriteを使った静的URLに対応してほしいです
少し使ってみました。で、要望を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"みたいなのを
返してくれるものがあると便利です。
結構ほしい人いると思います。
やりたいことは、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"みたいなのを
返してくれるものがあると便利です。
結構ほしい人いると思います。
Re: mod_rewriteを使った静的URLに対応してほしいです
webmasterです。
なるほど!確かにmod_rewriteを使った場合は、確かに@hrefは使えないですね・・。
今のところは「href="mypage/eid/{@id}.html"」が唯一の方法に思えます。
問題になるのはグループ絞込みなどを使っていて、eid以外にもパラメータが
ある場合でしょうか(単一エントリ表示で絞込みを使うことはめったにないとは
思いますが)。
一度、「{@id}.html」をお試しくださいませ。
なるほど!確かにmod_rewriteを使った場合は、確かに@hrefは使えないですね・・。
今のところは「href="mypage/eid/{@id}.html"」が唯一の方法に思えます。
問題になるのはグループ絞込みなどを使っていて、eid以外にもパラメータが
ある場合でしょうか(単一エントリ表示で絞込みを使うことはめったにないとは
思いますが)。
一度、「{@id}.html」をお試しくださいませ。
Re: mod_rewriteを使った静的URLに対応してほしいです
回答ありがとうございます。
静的URLはSEO的に重要なので、是非検討お願いします。
既存CMSとの差別化にもなるかと思います。
静的URLはSEO的に重要なので、是非検討お願いします。
既存CMSとの差別化にもなるかと思います。
Re: mod_rewriteを使った静的URLに対応してほしいです
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では、次のように指定します。
また、デザイン定義側では次のように指定します。
としていたところを、
のように変更します。
「.00001.html」までを自動で出力する、例えば「@rwhref」のような属性を
追加することも考えた(というか実際に実装までしてみた)のですが、
URLをどのように静的ページのように見せかけたいかは人によって違うかも
しれないと考えて、とりあえず保留しました。
実際、@rwhrefのようなものを使ったところで結局デザイン定義ファイルを
変更するのには変わりがないわけで、それならば方法だけどこかに記述する
というでどうだろうと考えております。
ななしさん他、ご意見をお持ちの方がいらっしゃいましたらよろしくお願い
致します。
ななしさんのご要望を読んで、確かに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に対応してほしいです
xmlとか本当にわかってないので、恥ずかしい質問をしていたら申し訳ありません。
質問なのですが、上記を試してみたところ、詳細ページが表示されなくなってしまいました。それまではうまくいっていたのですが。。
.htaccessとデザイン定義のリンクの書き方を変える以外に修正すべき箇所はありますか?
質問なのですが、上記を試してみたところ、詳細ページが表示されなくなってしまいました。それまではうまくいっていたのですが。。
.htaccessとデザイン定義のリンクの書き方を変える以外に修正すべき箇所はありますか?
Re: mod_rewriteを使った静的URLに対応してほしいです
webmasterです。かこさん、ご連絡ありがとうございます。
いちおう、上記の方法は弊社で実際に試した方法で、現在でも問題なく動作
しているようです。
「表示されなくなった」とは、IE等で「ページが見つかりません」となってしまう、
という認識でよろしいでしょうか?
.htaccessとデザイン定義のリンクを変える以外には特に問題ないはずなの
ですが、何か他の条件がうまく合っていないのかもしれません。
デザイン定義の変更後のリンク部分を教えて頂いてもよろしいでしょうか?
例えば、
<a href="abc.php{@href}">詳細を表示</a>
から
<a href="abc.{@href}.html">詳細を表示</a>
に変えた、などです。
変更後のデザイン定義の中身を全てコピー&ペーストして頂いてもOKです。
以上、大変お手数ですがよろしくお願い致します。
いちおう、上記の方法は弊社で実際に試した方法で、現在でも問題なく動作
しているようです。
「表示されなくなった」とは、IE等で「ページが見つかりません」となってしまう、
という認識でよろしいでしょうか?
.htaccessとデザイン定義のリンクを変える以外には特に問題ないはずなの
ですが、何か他の条件がうまく合っていないのかもしれません。
デザイン定義の変更後のリンク部分を教えて頂いてもよろしいでしょうか?
例えば、
<a href="abc.php{@href}">詳細を表示</a>
から
<a href="abc.{@href}.html">詳細を表示</a>
に変えた、などです。
変更後のデザイン定義の中身を全てコピー&ペーストして頂いてもOKです。
以上、大変お手数ですがよろしくお願い致します。
Re: mod_rewriteを使った静的URLに対応してほしいです
はじめまして。
クライアントのCMS導入検討で、いいサービスをみつけたと思い、早速テストさせていただいております。
順調にチュートリアルをこなしたのですが、
この静的URLの表示が、うまくされません。
<a href="nikki.php{@href}">詳細を表示</a>
から
<a href="nikki.{@id}.html">詳細を表示</a>
に変更し、URLは、間違いなく表示されるのですが、NOt Foundになります。
config直下にある「.htaccess」にも、上記に記載されているものをそのままコピペしているのですが、置く場所が違うのでしょうか?
よろしくお願いします。
クライアントのCMS導入検討で、いいサービスをみつけたと思い、早速テストさせていただいております。
順調にチュートリアルをこなしたのですが、
この静的URLの表示が、うまくされません。
<a href="nikki.php{@href}">詳細を表示</a>
から
<a href="nikki.{@id}.html">詳細を表示</a>
に変更し、URLは、間違いなく表示されるのですが、NOt Foundになります。
config直下にある「.htaccess」にも、上記に記載されているものをそのままコピペしているのですが、置く場所が違うのでしょうか?
よろしくお願いします。
Re: mod_rewriteを使った静的URLに対応してほしいです
aoaoさん、はじめまして。ご質問ありがとうございます。
このmod_rewirteの機能を有効にする為の .htaccess は、そのサイトのルート
に設置して下さい。
configフォルダにある .htaccessは、configフォルダ用のものなので、こちらは
そのままにしておいて下さい。
.htaccessは、そのファイルを置いたフォルダより下の階層にのみ影響する為、
configフォルダの .htaccessに記述を追加しても、ルートの各 .php ファイルには
影響しないのです。
結構ここでつまづかれる方がいらっしゃるようなので、今後 .htaccess関係の
事を書く際には、「configフォルダ内の .htaccessファイルではなく、ルート
直下に新しくファイルを作成してください」と追記しようと思います。
ご質問ありがとうございました。
このmod_rewirteの機能を有効にする為の .htaccess は、そのサイトのルート
に設置して下さい。
configフォルダにある .htaccessは、configフォルダ用のものなので、こちらは
そのままにしておいて下さい。
.htaccessは、そのファイルを置いたフォルダより下の階層にのみ影響する為、
configフォルダの .htaccessに記述を追加しても、ルートの各 .php ファイルには
影響しないのです。
結構ここでつまづかれる方がいらっしゃるようなので、今後 .htaccess関係の
事を書く際には、「configフォルダ内の .htaccessファイルではなく、ルート
直下に新しくファイルを作成してください」と追記しようと思います。
ご質問ありがとうございました。
Re: mod_rewriteを使った静的URLに対応してほしいです
コード: 全て選択
RewriteEngine on
RewriteRule ^([0-9A-Za-z_]+)\.([0-9)]+)\.html$ $1.php?eid=$2 [L]
「nikki.00001.html 」ではなく「nikki00001.html 」というような形にしたいと思い、
下記の通り変更してみました。
コード: 全て選択
RewriteEngine on
RewriteRule ^([0-9A-Za-z_]+)([0-9)]+)\.html$ $1.php?eid=$2 [L]
パラメータがない形「nikki.php」が表示されてしまうようです。
そのため、下記のように変更してみたりもしましたが、やはり同様です。
コード: 全て選択
RewriteEngine on
RewriteRule ^(A-Za-z_]+)([0-9)]+)\.html$ $1.php?eid=$2 [L]
よい方法がありましたら、ご教示いただけますと幸いです。
Re: mod_rewriteを使った静的URLに対応してほしいです
こんばんは
ちょっと修正です
*PHP5.3だとCMSDがエラー吐くんでURL消しました
ややこしくなると思うので一定のルールを決めておいた方がいいかもですね
ファイル名は数字を含まないとか ファイル名_クエリとか
あと例外の処理とか
でもあれですね、これじゃnews_893.htmlとか投げるとおかしなことになっちゃうな
やっぱ_とかで区切って明確にしておいた方が良さそうな気がします
ちょっと修正です
コード: 全て選択
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]
ややこしくなると思うので一定のルールを決めておいた方がいいかもですね
ファイル名は数字を含まないとか ファイル名_クエリとか
あと例外の処理とか
でもあれですね、これじゃnews_893.htmlとか投げるとおかしなことになっちゃうな
やっぱ_とかで区切って明確にしておいた方が良さそうな気がします
最後に編集したユーザー tsu on 2011年5月14日(土) 21:41 [ 編集 1 回目 ]
Re: mod_rewriteを使った静的URLに対応してほしいです
> tsuさま
ご回答ありがとうございます。(返信が遅くなり申し訳ありません。)
大変参考になりました。おかげ様で解決しました。
> webmasterさま
リンクの際、{@href}ではなく{@id}という形になってしまったため、
グループによる絞り込み条件が引き継がれなくなってしまいました。
絞り込み条件を継承したままリンクする方法はありますでしょうか?
ご回答ありがとうございます。(返信が遅くなり申し訳ありません。)
大変参考になりました。おかげ様で解決しました。
> webmasterさま
リンクの際、{@href}ではなく{@id}という形になってしまったため、
グループによる絞り込み条件が引き継がれなくなってしまいました。
絞り込み条件を継承したままリンクする方法はありますでしょうか?