- ベストアンサー
htaccessで静的URLを動的URLに書き換え
SEO対策としてcgiで動的に表示されるページを静的なURLで記載したいと思っております。 htaccessを使えば可能なようですが、http://www.aaa.com/tokyo/sibuyaのURLでhttp://www.aaa.com/cgi-bin/test/search.cgi?pref=tokyo&city=sibuyaを実行するにはどのように記載したらよいのでしょうか。 *tokyo,sibuyaの部分には任意の都道府県、都市名を入れたいです
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
> ついでで申し訳ないのですが、http://www.aaa.com/tokyo/sibuyaの「tokyo」「sibuya」の部分に日本語を入力すると、cgiの実行結果が文字化けしてしまいます。 > 何か改善の方法はありますでしょうか? URLエンコードされているとか、リンク元の文字コードがプログラムの文字コードと異なっていると言った事が原因ではないでしょうか。 拡張子がcgiなのでperlかと思いますが、decode関数等を使って文字コードを整えてやるといいかと思います。
その他の回答 (3)
- t_ohta
- ベストアンサー率38% (5241/13712)
RewriteEngine on RewriteCond %{REQUEST_URI} !^/cgi-bin/test/search.cgi$ RewriteRule ^/(.+)/(.+)$ /cgi-bin/test/search.cgi?pref=$1&city=$2 [L] または、最後の行を RewriteRule ^(.+)/(.+)$ /cgi-bin/test/search.cgi?pref=$1&city=$2 [L] で、どうでしょう。 2行目はリライトの無限ループ防止です。 3行目の2種類の違いは、パターンマッチの先頭に / を入れるか入れないかの違いです。 .htaccess で制御する場合、/ が入っているとマッチしない事があるので2パターン試してみてください。 httpd.conf 等に書く場合は / が必要なはずです。
お礼
/ をつけないパターンでうまくいきました。 ありがとうございます。 ついでで申し訳ないのですが、http://www.aaa.com/tokyo/sibuyaの「tokyo」「sibuya」の部分に日本語を入力すると、cgiの実行結果が文字化けしてしまいます。 何か改善の方法はありますでしょうか? ちなみに、http://www.aaa.com/cgi-bin/test/search.cgi?pref=東京&city=渋谷をそのまま入力すると文字化けはしません。
- t_ohta
- ベストアンサー率38% (5241/13712)
> しかし、うまく動作しませんでした。 > 何か考えられる問題はありますでしょうか? エラーが出ているのでしょうか? cgiにパラメータが渡って来ないのでしょうか? 渡ってきたパラメータが意図したものと違うのでしょうか?
お礼
再度ありがとうございます。 「エラー: このリンクは無効です。」となりますので、変換自体がされていないのではないかと思われます。
- t_ohta
- ベストアンサー率38% (5241/13712)
RewriteEngine on RewriteRule ^/(.+)/(.+)$ /cgi-bin/test/search.cgi?pref=$1&city=$2 [L]
お礼
さっそくご回答ありがとうございます。 しかし、うまく動作しませんでした。 何か考えられる問題はありますでしょうか?
お礼
ありがとうございます。 うまくいきました。 本当に助かりました。