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

mod rewriteについて質問させて頂きます。

[URL]modules/investing/index.php?page=「値1」article&storyid=「値2」1753
上記のようなアドレスにきたURLを
[URL]farticles/「値1」article/「値2」1753
に [R=301,L] したいと思っています。

この逆のパターンはよく見るのですが、上記方法がみつからず。
色々試してみたのですが、パラメータに添字がついてきたりして値のみを取り出せません。

お知恵を御借りできませんでしょうか?


●質問者: kichitaka
●カテゴリ:ウェブ制作
✍キーワード:INDEX MOD PHP Rewrite URL
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● kn1967
●50ポイント

farticles は /modules/investing/ からの相対パス指定ではなく

ルートからの絶対パス指定にする必要があります。

RewriteEngine on
RewriteBase /
RewriteRule ^/modules/investing/index.php?page=(.+article)&storyid=(.+1753)$ /farticles/$1/$2 [R=301,L]

Apache URL Rewriting Guide

◎質問者からの返答

ありがとうございます。助かりました。無事動きました。


2 ● sphire
●50ポイント ベストアンサー

参考 http://blog.ozacc.com/archives/001734.html

RewriteCond %{QUERY_STRING} page=(.*)article&storyid=(.*1753)
RewriteRule ^modules/investing/index\.php /farticles/%1article/%2 [R=301,L]

これでいけてるような気が、、うまくいかなかったらごめんなさい

でも、index.phpでリダイレクト処理する方がスマートな気がします。

if (preg_match('/^(.*?)articles$/', $_GET['page'], $p1) && preg_match('/^(.*?)1753$/', $_GET['storyid'], $p2)) {
 $url = sprintf("http://www.example.com/farticles/%sarticle/%s1753", $p1[1], $p2[1]);
 header('Location: ' . $url);
 exit;
}
◎質問者からの返答

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

たしかに、index.phpでやったほうがいいのですが今回は事情が有りphpには手を入れる事ができない状況でした。

また機会があれば使いたいと思います。ありがとうございました。

関連質問


●質問をもっと探す●



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