■ pukiwikiの動的URL(index.php?***)を静的URL(index.php/***)に書き換えたい


表題の通り、pukiwikiの動的URLをhtaccessで静的URLに書き換わるようにしたいです。
RewriteRule ^index\.php\?(.*)$ index\.php/$1 [L]などで試してみましたが、うまくいきません。
正しい書き方をご存知のかた、教えて頂けると助かります。
(サーバはさくらのレンタルサーバ・スタンダードを使っています)

回答の条件
  • 1人1回まで
  • 登録:
  • 終了:2016/03/01 20:40:32
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答1件)

id:a-kuma3 No.1

回答回数4973ベストアンサー獲得回数2154

ポイント100pt

mod_rewrite がきちんと動くようになってるとして、index.php の頭にスラッシュがないのが駄目なんだと思います。

RewriteRule ^index\.php\?(.*)$ /index.php/$1 [L]

これで、http://hostname/index.php?AA/BB でアクセスしてきた人に、
/index.php/AA/BB の内容を見せてあげることができます。

でも、Pukiwiki で index.php の後の ? を / に変える必要があるんでしょうか?
http://hostname/wiki/AA/BB でアクセスしてきた人を、/index.php?AA/BB で処理してあげる、とかではなく?

RewriteRule ^wiki/(.*)$ /index.php?$1 [L]
id:rand198

回答ありがとうございます!
実は今回wordpressに移管したのですが、htaccessで以下のような301リダイレクトを行っています。

RedirectMatch 301 ^/AA/BB$ 新URL

※ページ名のみで指定しているのは、index.php部分がWPの移管都合上、URLから消えてしまうため

ただこれだと「index.php?AA/BB」の時にリダイレクトされない事がわかり。。。
そこで、index.php?をindex.php/に最初の時点で書き換えてしまえばと思ったのです。

頂いたものを追加してみましたが、そのまま「?付きのURL」が残ってしまうようですね。。。
記述の順番かもしれないので、ちょっと入れ替えて試してみようと思います。

2016/03/01 17:47:28
  • id:braahmaNa
    よく分かんないな…
    旧URL形式でアクセスされた時、新URL形式の方に301リダイレクトって事?(SEO?)
    つか例示はリダイレクトじゃなくて内部書き換えなんだが…。
    んでRedirectMatchに渡すんならPTフラグ付けないと渡らねえべ?

    rewriteだけで書き換え・リダイレクト対応するんなら
    RewriteRule ^index\.php\?(.*)$ /index.php/$1 [R=301,L]
    でリダイレクトする気が
  • id:a-kuma3
    >頂いたものを追加してみましたが、そのまま「?付きのURL」が残ってしまうようですね。。。
    とかあるので、RewriteRule がいくつもあって質問にあるルールよりも前のルールの L フラグで終了とか、そういうことだったのでしょう(きっと)。
  • id:braahmaNa
    順番とか有ってればa-kuma3さんのパターンで捕捉されると思うんですよねえ…。
    内部書き換えなんで、ブラウザのURL欄の事なら、そりゃ残りますし。

    コレ旧ドメインから新ドメインへの301とかじゃないですよね?(多分)

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

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

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

回答リクエストを送信したユーザーはいません