▲TOP > Web制作
エンコードした日本語を含む動的URLの301リダイレクト
仕事で運営しているサイトのディレクトリ名を SEO対策として変更したので .htaccessを使って301リダイレクトしてみた。
.htaccessの表記はこれ↓
RewriteEngine On RewriteRule ^old(.*)$ /new$1 [R=301,L]
これは、 http://www.○○○.net/old/以下にアクセスしてきたものを http://www.○○○.net/new/へリダイレクトする。
例えば http://www.○○○.net/old/sample.htmlは http://www.○○○.net/new/sample.htmlへリダイレクトされる。
設置してテストしてみると、正常に動作・・・・。
と思ったら、うまくリダイレクトされないページが・・・。
それは、エンコードした日本語を含むパラメータの入った動的URL。
いろいろ原因を調べてみたら、301リダイレクトを行うと、エンコードした文字列に含まれる「%」が「%25」にエンコードされてしまうため正常にデコードできないため。
そこで対応策をいろいろ調べて成功したのがこれ。
RewriteRule ^old(.*)$ /new$1 [NE,R=301,L]
そう、NE を加えるだけ。
これは、エンコードをされないようにするらしい。
これで一安心。
ただ、この.htaccessの表記は、サーバーの仕様によって異なるらしいので注意が必要。
ちなみに、CGIでの301リダイレクトは、
print "Status: 301 Moved Permanently\n"; print "Location: http://www.○○○.net/new/\n\n";
(2013年03月06日)
|