ISAPI_rewriteで日本語パラメータを書き換える方法

このQ&Aのポイント
  • レンタルサーバーにISAPI_rewriteをインストールしてもらい、日本語のパラメータを含むURLを静的URLに変換する方法を教えていただけませんか?
  • URLのパラメータに日本語を含めると、正常に動作しないことがあります。その問題解決策を教えてください。
  • ISAPI_rewriteを使用して、URLに日本語のパラメータを含む静的URLを作成する方法を教えてください。
回答を見る
  • ベストアンサー

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] 宜しくお願い致します。

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

  • ベストアンサー
  • kero_mio
  • ベストアンサー率90% (94/104)
回答No.1

そのURL、エンコードが必要ですね。 http://sample.com/word/テスト というURLは、 http://sample.com/word/%E3%83%86%E3%82%B9%E3%83%88%0D%0A のようにアクセスすればOKなんですが、恐らくwillnet側で、 URL Scanというソフトを導入している関係で、この現象が 発生している可能性があります。 参考URL: http://oshiete1.goo.ne.jp/qa393705.html http://209.85.175.104/search?q=cache:gNDjJMuy8o8J:moodle.org/mod/forum/discuss.php%3Fd%3D94176+ISAPI_rewrite+URLEncode&hl=ja&ct=clnk&cd=8&gl=jp Windows系ということなので、WebサーバがIISかもしれませんが、 IIS + URL Scanの場合は、いろいろとやっている可能性があるので willnet側にURL Scan導入有無を確認されてみては如何でしょうか?

参考URL:
http://oshiete1.goo.ne.jp/qa393705.html
celemonday
質問者

お礼

大変参考になる回答ありがとうございます。 頂いた情報を基に調べてみます。

関連するQ&A

  • mod_rewriteでアドレスを書き換えたい

    mod_rewriteでアドレスを書き換えたい思っています。 xamppでテストしていますがうまくいきません。 mod_rewrite.soの#は外しています。(つまり、.htaccess以外の設定はできていると思います) 【やりたい事】 localhost/test/index.php?p=test を  ↓ localhost/test/i/test でアクセスしたいです。 【参考にした情報】 http://www.sample.com/cgi-bin/sample/sample.cgi?a=123&b=456 というURLを静的なアドレスでアクセスできるように以下のように設定します。 RewriteEngine on RewriteRule ^/cgi-bin/sample/([0-9A-Za-z]+)/([0-9A-Za-z)]+)\.html$ /cgi-bin/sample/sample.cgi?a=$1&b=$2 [L] を言うのを見つけました。 【試したこと】 .htaccessをつくり RewriteEngine on RewriteRule ^/test/i/([0-9A-Za-z)]+)$ /test/index.php?p=$1 [L] と記入 【結果】 Object not found! 要求された URL は本サーバでは見つかりませんでした。 もし手入力で URL を入力した場合は、綴りを確認して再度お試し下さい。 と表示されました。 ------------------------------------------------------------------ localhost/test/i/testでアクセスするには、.htaccessをどう書けばいいのでしょうか? 疑問1.xamppでlocalhostでmod_rewriteができるのだろうか? 疑問2.参考にした情報のRewriteRuleの"^"がわからない。正規表現の"^"とは文頭にマッチすると思います。この場合の文頭とは? よろしくお願いします。

  • mod_rewriteによるURLの書き換え

    mod_rewriteを使ってURLの書き換えを行いたいのですが、どうしてもうまくいきません…。 http://***.main.jp/rewrite/name/index.shtml?total=num にアクセスされた場合に http://***.main.jp/rewrite/php.php?title=name?total=num に切り替えて処理させたいと思っています。 .htaccessには RewriteEngine on RewriteRule ^(.*)/index\.shtml\?total=([0-9]*)$ rewrite/php.php?title=$1&total=$2 このように記述したのですが、書き換えが行われずにindex.shtmlの内容が表示されてしまいます。 どうか、ご教授いただけませんでしょうか? サーバーはロリポップを使用しています。

  • mod_rewriteの書き方について

    mod_rewriteの書き方について いつもお世話になっております。 mod_rewiteについて質問させていただきます。 複数の設定をしたいのですが、404のエラーが出てしまい思っている動作になりません。 -------------------------------------------------- RewriteEngine on (1) RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule hoge/(.*)\/(.*)\/(.*)\/(.*)\.html$ /hoge/$1/$2.php?$3=$4 [L] RewriteRule hoge/(.*)\/(.*)\/(.*)\/(.*)\/(.*)\/(.*)\.html$ /hoge/$1/$2.php?$3=$4&$5=$6 [L] (2) RewriteRule (.*)\.html$ /$1.php [L] -------------------------------------------------- 上記の設定を記載しております。 (1)はパラメーターがあった場合、URLの書き換えをしています。 ここはちゃんと動作しております。 (2)で、http://www.hoge.com/dir/index.html にアクセスした場合 /dir/index.php を呼び出すことに成功はしています。 ただ、http://www.hoge.com/dir/category.html にアクセスした場合 PHPファイルではなく、HTML(/dir/category.html)の場合404のエラーになってしまいます。 分かりづらい説明で申し訳ございませんが、ご教示よろしくお願いいたします。 [環境]  PHP:5.1.6  Linux:調べられません・・・わりと新しいバージョンです。

  • mod_rewriteで存在するファイルの設定方法

    mod_rewriteで質問です。 http://foo.com/test.php というファイルを http://foo.com/test でアクセスできるようにしたいです。 login.phpはディレクトリに存在する状態です。。 レンタルサーバーの仕様なのか、 RewriteRule test /test.php としてもInternal Server Errorになります。 ただ、 RewriteRule aaa /test.php と設定すると、 http://foo.com/aaa でtest.phpにアクセスできることはわかりました。 test.phpが存在する状態だとこれはできないことなのでしょうか?

  • mod_rewriteについて教えてください。

    mod_rewriteについてお願いします。 「a」と「b」というフォルダにそれぞれ「index.html」「test.html」が入っています。「a」と「b」で「index.html」「test.html」の内容はちがいます。 わたしが一番望んでいるのは http://example.com/a/以下にアクセスがあった場合 http://example.com/b/以下にリダイレクトさせるというものです。 例) http://example.com/a/test.htmlにアクセスがあったらhttp://example.com/b/test.htmlにリダイレクト。 ------------------------------------------------------------ Options +FollowSymLinks AddHandler cgi-script htaccess <IfModule mod_rewrite.c> RewriteEngine on RewriteRule ^/a/$ /b/$1 [R=302,L] </IfModule> ------------------------------------------------------------ としてみましたが、リダイレクトされません。 ちなみに RewriteRule ^$ /b/$1 [R=302,L] と書くと、http://example.com/にアクセスがあった場合 http://example.com/b/にリダイレクトされましたので mod_rewriteには対応しております。 ご教授のほど、よろしくお願いいたします。

  • .htaccessにmod_rewriteを設定して静的なURLにしたい

    .htaccessにmod_rewriteを設定して、動的なページのURLを静的なURLにしたいのですが、うまくいきません。 http://localhost/test/hoge.php/aiueo というURLで http://localhost/test/hoge.php?key=aiueo になるようにしたいのです。 検索して試しに以下のように記述したのですが、ダメでした。 <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^/test/hoge.php/(.+) /test/hoge.php?key=$1 [L] </IfModule> また「aiueo」の部分にスラッシュを含む場合もあるのですが、その際にも対応できるようにしたいです。 ご回答の程、よろしくお願いします。

    • ベストアンサー
    • PHP
  • 動的URLを静的URLへリダイレクト

    サーバの移転にともない、古いURLから新しいURLへリダイレクトさせる作業を行っています。 旧:http://aaa.bbb.com/default.asp?year=yyyy&month=mm ↓ 新:http://mmm.nn.co.jp/yyyymm しかし上記のようにパラメータを持っているURLはうまくリダイレクトされません。 今回の場合、動的ページを静的ページに見せるのではなく、URL欄も表示も静的ページに遷移させます。 この作業にはISAPI_Rewriteを使っていますが、ISAPI_Rewriteで検索してもmod_rewriteで検索しても、静的URLから動的URLへのリダイレクト(URLは静的で表示が動的ページの内容)しかでてきません。 そもそも正規表現に「?」を入れるとリダイレクトできないのか(?がエスケープされていない気がします)、書き方が間違っているのなら正しい書き方を教えていただけると助かります。 [現在使っている記述] RewriteRule ^aaa/bbb.asp\?year=(.*)&month=(.*)$ http://one.case.com/ddd/$1$2 [R,L] よろしくお願いいたします。

  • mod_rewriteでQUERYパラメータ数操作

    mod_rewriteで、静的化したいのですが、 QUERYパラメータ数が変化する場合には、どうすればよいでしょうか? ■現状 ▼URL /hoge.php?id=1 ▼.htaccess RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^hoge([0-9A-Za-z]+)\.html$ hoge.php?id=$1 [L] QUERYパラメータ数が一個のときは、 hoge1.htmlとなり、うまくいくのですが、 下記URLのようにQUERYパラメータがない場合があり、その場合に、エラーとなります(元のリンク自体も書き変えるので)。 /hoge.php QUERYパラメータ数が変化する(ない場合もある)時の.htaccessは、 どのように書けばよいのでしょうか? ・htaccess内で、条件分け可能なのでしょうか?

    • ベストアンサー
    • PHP
  • .htaccessでGET引数をもとにリダイレクト

    http://test.com/ というサイトがあったとして、.htaccessを用い、 http://test.com/123 というアドレスにアクセスした場合、 http://test.com/sample.php?id=123 にリダイレクトし、 http://test.com/m/123 にアクセスした場合は、 http://test.com/m/sample.php?id=123にリダイレクトさせたいと考えています。 リダイレクト後もアドレスバーのURLは http://test.com/123、あるいは http://test.com/m/123のまま維持しているようにしたいです。 id は常に数字のみで、サーバーはロリポップのチカッパプランです。 上の方は RewriteEngine on RewriteRule ^([0-9]+)$ sample.php?id=$1 としたらなんとなくできているようですが、 「m」のほうは「m」ディレクトリ内に RewriteEngine on RewriteBase /m/ RewriteRule /m/([0-9])$ /m/sample.php?id=$1 と置いても404エラーになってしまいます。 どうしたら良いのでしょうか?

    • ベストアンサー
    • HTML
  • mod_rewriteが効かない!

    サーバの運用上、mod_rewriteを使う必要が出来たので設定してみたのですが効きません。 FreeBSD4.11+Apache1.3.33で httpd.confファイルに直接書き込んで試しています。 LoadModule rewrite_module modules/mod_rewrite.so AddModule mod_rewrite.c のどちらも書いてあるにもかかわらず、下記のテスト設定を試してみたらローカルIPからアクセス出来てしまいます。 RewriteEngine on RewriteCond %{REMOTE_ADDR} ^192\.168\.1\. ←ローカルネットワークのアドレス RewriteRule ^.*$ - [F] どのようにしたらいいですか? アドバイスお願い致します。

専門家に質問してみよう