サポート » 使い方全般 » mod_rewriteを使ったURLのカスタムができない。

  • 検索結果(search.php)のURLを、擬似静的化させたいです。
    どなたかご教示いただけませんでしょうか。

    <環境>
    さくらレンタルサーバー
    wordpress 4.3.2

    現在、サイト上で検索をかけると

    http://ホスト名/?s=&ken=熊本県&shi=熊本市

    というURL表示になっています。
    (カスタムフィールドで作成したパラメータ・・・ken、shi)

    これを

    http://ホスト名/熊本県/熊本市/

    という表示に変更し、擬似的にURLを静的化させたいのです。

    ルート直下の.htaccessの一番最後に、下記のコードを書きました。

    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php/$ ?s=$1 [L]
    RewriteRule ^index\.php/$ ?s=$1&ken=$2 [L]
    RewriteRule ^index\.php/$ ?s=$1&ken=$2&shi=$3 [L]
    </IfModule>

    しかし結果は、何も変わりません。
    mod_rewriteの内容がどこか間違っているのでしょうか。
    .htaccessのファイルの場所が間違っているのでしょうか。
    いろいろ試行錯誤しましたが、自力で解決できませんでした。
    どうぞよろしくお願いいたします。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • mod_rewriteで何ができて何ができないのか、考えなおした方が良いかもしれません。
    mod_rewriteのルールの書き方も。

    読み返したらコピペ失敗してて最初の2行しか入ってませんでした。すみません。

    とりあえず書かれていることをリライトルールにするとこんな風な感じ。
    RewriteRule ^(.*)/(.*)/ /?s=&ken=$1&shi=$2 [L]
    RewriteRule ^(.*)/ /?s=&ken=$1 [L]

    ただし、これだとマッチする範囲が広すぎてwordpress用の他のURLを書き換えてトラブル筈。

    RewriteRule ^search/(.*)/(.*)/ /?s=&ken=$1&shi=$2 [L]
    RewriteRule ^search/(.*)/ /?s=&ken=$1 [L]
    例えばこんな風に変換対象の先頭にwordpressがURLとして発行しないであろう文字列をつけてやれば誤リライトは防げます。
    この場合、使用側のURL
    http://example.com/search/熊本県/熊本市/
    http://example.com/search/熊本県/

    なお、永らくApacheを触っていないのでこれで実際に正しくリライト出来るか確証はないです。
    で、問題はこのURLをどうしたいの?な部分ですね。
    ブラウザのURL欄に手入力するというなら解決ですが、
    おそらく質問者の意図は検索結果のURLを綺麗に見せたいだから見当外れな回答でしかないですね。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「mod_rewriteを使ったURLのカスタムができない。」には新たに返信することはできません。