日本語パラメータを含むファイルを英文のディレクトリにリダイレクトしたいのですが、うまくいきません。いろいろなパターンを試していますが、認識されていないようです。
旧ページ
http://www.hogehoge.com/index.php?会社案内
新ページ
https://www.hogehoge.com/office/
RewriteEngine on
RewriteBase /
RewriteCond %{QUERY_STRING} ^会社案内$
RewriteRule ^(|index.php)$ https://www.hogehoge.com/office/? [R=301,L]
httpからhttpsへのリダイレクトは設定済みです。
会社案内を
%E4%BC%9A%E7%A4%BE%E6%A1%88%E5%86%85
にしたり、
\xE4\xBC\x9A\xE7\xA4\xBE\xE6\xA1\x88\xE5\x86\x85
にしてもうまく認識されません。
リダイレクトは何度かやっていますが、動的で日本語のパターンは初めてです。
アドバイスいただけると助かります。
PHPの転送ではだめなのでしょうか?
今回、サーバ移転でドメインを移管しています。また、旧ページのあるサーバは他社で既に入れません。現状、検索でインデックスされているページは、暫定で、すべてサイトトップにリダイレクトされています。できれば、「会社案内」⇒「office」のように個別の対応ページにredirectさせたいと思っています。
> 旧ページのあるサーバは他社で既に入れません
httpのサイトはもういじれないということであればどうやって飛んできた時点で
もうhttpでつけたパラメータは受け取れないのでは?
httpsとおなじhttpサーバーが別管理というの理解に苦しみます
そもそもwww.hogehoge.comの部分がhttpとhttpsで違うurlなのでしょうか?
説明不足ですいません。ドメインの移管です。A社で運用していたサイトをB社で運用することになりドメインを移管しています。A社で運用時はSSL非対応だったので、SSL対応のB社に引っ越すということになり、ドメインの管理会社も変更しています。ドメイン自体はhogehoge.comで同じです。DNSも切替済みで、httpで飛んできたものはhttpsに切り替えています。静的ファイルや動的なパラメーター付きの英文⇒英文のリダイレクトは問題なくいくのですが、日本語がうまくいきません。
http://www.hogehoge.com/index.php?会社案内
をブラウザのアドレスバーに入力すると、どうなりますか?
どうならないかじゃなくて、どうなるかを見たまま解釈せずに書いてください。
Apacheのerror_logに情報があればそれも。
httpがhttpsに完全に飛ばされる仕様ならhttps側のindexでGETを使って処理すればよいのでは?
RewriteCondが間違っていますか?申し越し具体的にご教授いただくと助かります。
> https://www.hogehoge.com/index.php?会社案内 になります。
日本語のまま書いても駄目ですが、
RewriteCond %{QUERY_STRING} ^%E4%BC%9A%E7%A4%BE%E6%A1%88%E5%86%85$
でも、そうなりますか?
同じです。日本語も、エンコーディングされたコードでも16進数に変換しても、ダメです。検索結果の旧ページをクリックすると、アドレスバーにはhttps://www.hogehoge.com/index.php?会社案内とでています。表示されるページはhttps://www.hogehoge.com/です。
RewriteCond %{QUERY_STRING} ^~~~
の行を削除して、
https://www.hogehoge.com/index.php
でどうなりますか?
リダイレクトされないなら、RewriteCondの記述以前の問題ですね。
あなたの回答
tips
プレビュー