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日)


スポンサーリンク

スポンサーリンク





Copyright(C) 2009-2018 「気ままにMyRoad」 All Rights Reserved.