Apacheのmod_rewriteをつかって、URL中のアンダースコアをハイフンに置き換えるRewriteRuleを教えてください。


つまり、
http://example.com/blog/2008/05/post_14.html
というようなURLを
http://example.com/blog/2008/05/post-14.html
にリダイレクトするコードが知りたいです。

#ちなみに用途は、
 http://blog.bq69.net/2008/03/mt-41-upgrade-contd.html
この現象を何とかしたいのです。

回答の条件
  • 1人2回まで
  • 登録:2008/05/04 17:54:11
  • 終了:2008/05/10 15:28:15

ベストアンサー

id:znz No.2

znz回答回数193ベストアンサー獲得回数252008/05/04 22:28:59

ポイント100pt

Nでループさせるのはどうでしょうか?

http://diary.asuka.net/apache_mod_rewrite_tips と1の回答を参考にすると次のような感じでしょうか。

RewriteRule ^([0-9]+)/([0-9]+)/([^_]+)_(.+)\.html?$ $1/$2/$3-$4.html [N]

その他の回答(1件)

id:yshkw No.1

yshkw回答回数79ベストアンサー獲得回数32008/05/04 19:28:59

ポイント100pt

お急ぎであればこれで上記の例(アンダーバー4個まで)に対応できます。

アンダースコアが5個以上の場合は、お察し下さい。

RewriteEngine on
RewriteBase /

RewriteRule ^([0-9]+)/([0-9]+)/([^_]+)_([^_]+).html?$ $1/$2/$3-$4.html [L]
RewriteRule ^([0-9]+)/([0-9]+)/([^_]+)_([^_]+)_([^_]+).html?$ $1/$2/$3-$4-$5.html [L]
RewriteRule ^([0-9]+)/([0-9]+)/([^_]+)_([^_]+)_([^_]+)_([^_]+).html?$ $1/$2/$3-$4-$5-$6.html [L]
RewriteRule ^([0-9]+)/([0-9]+)/([^_]+)_([^_]+)_([^_]+)_([^_]+)_([^_]+).html?$ $1/$2/$3-$4-$5-$6-$7.html [L]
id:mogya

そうですね。引き続き、スマートな回答があればお待ちしております。

2008/05/04 20:48:58
id:znz No.2

znz回答回数193ベストアンサー獲得回数252008/05/04 22:28:59ここでベストアンサー

ポイント100pt

Nでループさせるのはどうでしょうか?

http://diary.asuka.net/apache_mod_rewrite_tips と1の回答を参考にすると次のような感じでしょうか。

RewriteRule ^([0-9]+)/([0-9]+)/([^_]+)_(.+)\.html?$ $1/$2/$3-$4.html [N]

コメントはまだありません

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

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

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

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません