日本語パラメータ付きページの静的化

このQ&Aのポイント
  • UTF8でエンコードされた日本語パラメータ付きのURLを.htaccessのRewriteRuleで静的化したいのですが、うまくいきません
  • 変換前のURLはhttp://xxx.com/index.php?param=%E3%83%86%E3%82%B9%E3%83%88で、変換後のURLはhttp://xxx.com/%E3%83%86%E3%82%B9%E3%83%88になるようにしたいです
  • 正規表現を使用してRewriteRuleを書いてみましたがうまくいかないので、正しい書き方を教えていただけませんか
回答を見る
  • ベストアンサー

日本語パラメータ付きページの静的化

UTF8でエンコードされた日本語パラメータ付きのURLを.htaccessのRewriteRuleで静的化したいのですが、うまくいきません。 やりたい事は、例えば以下の様な変換です。 変換前:http://xxx.com/index.php?param=%E3%83%86%E3%82%B9%E3%83%88 ↓ 変換後:http://xxx.com/%E3%83%86%E3%82%B9%E3%83%88 (\.*)にしてみたり、半角英数および%が正規表現に引っかかるようにと試してみたりしたのですがうまくいきません。 上記の変換が可能なRewriteRuleの書き方を教えていただけないでしょうか。 よろしくお願いします。

  • PHP
  • 回答数1
  • ありがとう数4

質問者が選んだベストアンサー

  • ベストアンサー
noname#111181
noname#111181
回答No.1

これで変換しませんか? RewriteRule index.php\?param=(.*)$ $1 [R=301,L]

akirou
質問者

お礼

回答ありがとうございます。 できました!!(たぶん) 何故かずっと (\.*) と、ドットをエスケープするのを当然のように使っていました、恥ずかしい・・・。 教えていただいたとおり(.*)に変更したらうまくいきました。 本当にありがとうございました。

関連するQ&A

  • ISAPI_rewriteでURLを書き換える場合の日本語パラメータ

    レンタルサーバーにISAPI_rewriteをインストールしてもらい、動的URL→静的URLの変換をしています。 サーバーはwillnet のWINDOWSプランです。 パラメータに日本語を入れたときに挙動がおかしくなりますので、何か解決策があればご教授頂けると助かります。 文字エンコーディングはページ、mySQL、ISAPI_rewriteともUTF-8にしてあります。 http://sample.com/word/テスト にアクセスすると、 http://sample.com/word.php?w=テスト が表示されます。 パラメータが英数字のみの場合は問題なく、 日本語の場合、404 NOT FOUNDになったり、問題なく読み込めたり、安定していません。 http://sample.com/word.php?w=テスト にはアクセスできます。 .htaccessは以下のようになっています。 RewriteEngine on RewriteRule ^word/(.*)$ /word.php?w=$1 [L] 宜しくお願い致します。

  • .htaccessで動的URLを静的化

    動的URLを静的化したいと考えています。 ネットで調べるとよくあるサンプルは RewriteRule ^/dir/([0-9A-Za-z]+)/([0-9A-Za-z]+)$ /dir/index.php?a=$1&b=$2 という風に「静的なURLにアクセスして、内部ではパラメータ付きのURLでの処理をさせる」 というパターンが多いのですが、私がやりたいのは逆で「動的URLにアクセスがあれば静的URLにリダイレクトをさせる」というものです。 理由は、 ・すでにサイトがある程度できあがっていて、既存のURLもある程度Googleにインデックスされている ・パラメータの組み合わせパターンが色々あるため上記のようなルールで対応できない などです。 そこで http://xxx.com/dir/index.php?a=01&b=02 や http://xxx.com/dir/index.php?b=02&c=03&x=999 といった動的URLを http://xxx.com/dir/a-01/b-02/ http://xxx.com/dir/b-02/c-03/x-999/ RewriteRuleを使ってこのような形で一旦301リダイレクトさせ、これをPHPの内部処理でパラメータ付きURLに戻すことによって既存のロジックを生かしたままURLを静的化できないかと考えています。 RewriteRuleの記述を色々書き換えて試してみたのですが、どうしてもやりたいようなURLの変換ができません。 どのように記述すればよいか、ご教授下さい。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • パラメーター付きのURLをリダイレクトしたい

    お世話になります .htaccess でリダイレクトを行いたいのですが、パラメータ付きのURLの為かリダイレクトができません。 .htaccess内の記述↓ redirect 301 /aaa/bbb.php?N=1 http://www.aaa.com/index.html 「?=N1」の部分を取れば問題なくリダイレクトします パラメータ付きのURLはリダイレクト可能でしょうか? よろしくお願いいたします

  • htaccessのRewriteRuleの正規表現

    htaccessファイルのRewriteRuleの記載方法で悩んでいます。 実現したい事は以下の2つの動作ですが、(1)は出来たのですが、(2)で困っています。 なお、{user_name}は"?"を除く半角英数文字と-_で構成されています。 (1)Twitterのようにドメイン名以後にユーザ名がある場合はindex.phpにGETのuserでuser_nameを渡す http://hogehoge.com/{user_name}  ↓ http://hogehoge.com/index.php?user={user_name} (2)ユーザ名表示の際にオプションがある場合("?"以後)は、そのまま変換先URLの最後尾に記述する http://hogehoge.com/{user_name}?option1=ok  ↓ http://hogehoge.com/index.php?user={user_name}&optione1=ok 現状以下のようにhtaccessを考えましたが結果NGでした。 RewriteEngine on RewriteRule (.+)[?](.+)$ index.php?mode=user&screen_name=$1&$2 [L] RewriteRule (.+)$ index.php?mode=user&screen_name=$1 [L] よろしくお願いいたします。

    • ベストアンサー
    • HTML
  • htaccess ユーザーエージェント 振り分け 

    htaccess でユーザーエージェント 振り分けを行いました。http://www.example.com/ 以下に htaccessを入れましたが、PCのSEO対策上問題があるでしょうか? RewriteEngine On RewriteCond %{HTTP_USER_AGENT} DoCoMo RewriteRule ^$ http://www.example.com/i/index.html [R] RewriteCond %{HTTP_USER_AGENT} J-PHONE RewriteRule ^$ http://www.example.com/s/index.html [R] RewriteCond %{HTTP_USER_AGENT} Vodafone RewriteRule ^$ http://www.example.com/s/index.html [R] RewriteCond %{HTTP_USER_AGENT} SoftBank RewriteRule ^$ http://www.example.com/s/index.html [R] RewriteCond %{HTTP_USER_AGENT} UP.Browser RewriteRule ^$ http://www.example.com/e/index.html [R]

    • ベストアンサー
    • HTML
  • パーセントが入ったURLのページが表示されない

    パーセントが入ったURLのページが、うまく表示されなくて困っています。 環境は、さくらのレンタルサーバ スタンダード なのですが、 /home/USERNAME/www/www.example.com/%E4%BC%8A%E6%9D%B1%E6%84%9B.xml (1) にファイルを置いている状態で、 http://www.example.com/%E4%BC%8A%E6%9D%B1%E6%84%9B.xml (2) この(2)のURLにアクセスすると、(1)のファイルの内容が表示されるはずだと思うのですが、表示されません。 (2)のURLのファイル名部分をさらにUTF-8でエンコードした、 http://www.example.com/%25E4%25BC%258A%25E6%259D%25B1%25E6%2584%259B.xml (3) にアクセスすると、(1)のファイルの内容が表示されます。 色々検索して、「.htaccess」をいじればいいのかな?と思ったのですが、 知識が乏しく、理解することができませんでした。 どのようにすれば、(2)のURLで(1)のファイルの内容が表示されるようにできるでしょうか。 ご回答よろしくお願いします。

    • ベストアンサー
    • PHP
  • 動的ページを静的ページの変換

    動的ページを静的ページの変換で http://www.yyyyy.com/aaa/bbb/xxx.php?word=xxx&ger=1234&sort=xxxx を http://www.yyyyy.com/aaa/bbb/xxx.php/xxx/1234/xxxx.html としたいのですが、、うまくいきません。 DirectoryIndex xxx.php RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([0-9A-Za-z]+)/([0-9]+)/([0-9A-Za-z]+)\.html$ xxx.php?word=$1&ger=$2&sot=$3 [L] と RewriteEngine on RewriteRule ^([0-9A-Za-z]+)/([0-9]+)/([0-9A-Za-z]+)\.html$ xxx.php?word=$1&ger=$2&sot=$3 [L] で試しました。 サーバーはxreaです。 よろしくおねがいいたします。

    • 締切済み
    • PHP
  • htaccessの正規表現でのリダイレクト記述方法

    htaccessの正規表現でのリダイレクト記述方法についてお尋ねします。 http://xxx.com/123456 とアクセスがあった時に http://xxx.com/no/123456.html にリダイレクトする書き方を教えてください。 なお、 1)xxx.jp/にはindex.htmlやその他のファイルが存在する予定です。 2)「123456」に当たる部分は必ず数字6ケタです。

  • ディレクトリ名に日本語をエンコードしたものを入れる

    例えば、[てすと] という文字列をurlencode()関数 でエンコードして %5B%E3%81%A6%E3%81%99%E3%81%A8%5D になりますよね。 でも、自分のサイトで、http://○○○.com/test/%5B%E3%81%A6%E3%81%99%E3%81%A8%5D/index.php にリンクを張ってアクセスしても、アクセスできないのです。 404エラーになってしまいます。 例を挙げるなら、ニコニコ動画のタグ以降のURLは http://www.nicovideo.jp/tag/○○○○○ となっています。 ○○○○○の部分に日本語をエンコードした文字列が入っています。 このような日本語をエンコードした文字列は、どうやって作ればいいのですか? urlencode()関数 で作ったはいいのですが、そこにリンクを張ってもアクセスできません。

    • ベストアンサー
    • PHP
  • htaccess の rewriterule でカタカナが入っているURLを使いたい

    htaccess の rewriterule でカタカナが入っているURLを 使いたいのですが、htaccessファイルがUTF-8で保存できないため困っています。 wikiフォルダへのrewriteは動作しています。 redirect ではなく rewrite で行いたいです。 何かいい方法がありませんか? ※htaccessサンプル RewriteEngine on RewriteCond %{HTTP_HOST} ^(www\.aaa\.com) RewriteRule ^/?(.*) http://www.aaa.com/wiki/メインページ [R=301,L]

専門家に質問してみよう