人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

ディレクトリの名前を変更したため、htaccessにて301リダイレクトをしようとしていますが、移転前のURLが長い?せいか(日本語のフォルダ名・ファイル名)リダイレクトがうまくいきません。
短いURLでは正しく動作することを確認しています。

.htaccessファイルに文字数制限等はあるのでしょうか?
またmeta refresh以外にて正しく301リダイレクトをする方法があれば、ご教授願います。

●質問者: kazuhiko11
●カテゴリ:インターネット ウェブ制作
✍キーワード:.htaccess URL ディレクトリ ファイル フォルダ
○ 状態 :終了
└ 回答数 : 5/5件

▽最新の回答へ

1 ● pahoo
●20ポイント

コメント欄に書き込めないので、回答欄にて確認することをご容赦ください。


日本語のフォルダ名・ファイル名というのはURLエンコードされたものですか? この場合、ドメイン名を含めた長さは何バイトになっていますか?

それとも、マルチバイト文字ですか? この場合、UTF-8でエンコードしていますか?

◎質問者からの返答

UTF-8でエンコードでこのような形です。

%E6%9D%B1%E8%8A%9D%E3%83%86%E3%83%83%%B7%E3%82%B9%E3%83%86%E3%83%A0/9%E3%83%86%E3%83%A0%E3%81%A8%E3%81%AF.html


2 ● 桜ヶ丘
●20ポイント

> 移転前のURLが長い?せいか(日本語のフォルダ名・ファイル名)リダイレクトがうまくいきません。

まさかとは思いますが、.htaccessに日本語のまま(URLエンコードされていない形で)記述してませんよね?

ディレクトリ名を実際のものとは置き換えてでも、どのような設定をしているか見せて頂いた方が答えやすいかもしれません。

> .htaccessファイルに文字数制限等はあるのでしょうか?

Apache2.2のマニュアルを読んだところ、そのような記述はありませんでした。

また、手元のApache2.2.9(Debian lenny)でテストしたところ、一行1024文字以上の.htaccessも問題なく使用できました。

しかしネット上には「文字数制限がある」と断言している方もいらっしゃるようです。もしかして他のバージョンでは文字数制限があったのかもしれませんね。

ご利用されてるのはApacheですか?バージョンはいくつでしょうか。

> またmeta refresh以外にて正しく301リダイレクトをする方法

まず、.htaccessに記述する方法は二通りありますがどちらも試されましたでしょうか?

Redirect 301 /hoge/ http://example.jp/fuga/

RewriteEngine on

RewriteRule ^/hoge/$ /fuga/ [R=301]

また、PHPやCGIによってヘッダを送出し、301リダイレクトをする方法もあります。

# ファイルhogeを置いたディレクトリの.htaccess

<FilesMatch "^hoge$">

ForceType application/x-httpd-cgi

</FilesMatch>

# hogeの中身(CGIでの例)

my $uri = $ENV{'REQUEST_URI'};

$uri=~s/\/hoge\//\/fuga\//;

print "Status: 301 Moved Permanently\n";

print "Location: http://example.jp$uri\n";

> ご教授願います。

この場合、「ご教示願います。」が正しいです。

一度「ご教授願います」でググってみてください。

◎質問者からの返答

一度「ご教授願います」でググってみてください。

http://www.tt.rim.or.jp/~rudyard/torii009.html

こちらですね。

失礼しました;;

試しにリダイレクト先に設定した場合はうまくいくのですが。


3 ● pahoo
●20ポイント

UTF-8でエンコードでこのような形です。

%E6%9D%B1%E8%8A%9D%E3%83%86%E3%83%83%%B7%E3%82%B9%E3%83%86%E3%83%A0/9%E3%83%86%E3%83%A0%E3%81%A8%E3%81%AF.html

おや? これだとデコードできませんよ。

このため、リダイレクトが正常に働いていないのではないでしょうか。

URLエンコード・デコードフォームで確認してみてください。


※設定された回答回数の上限になりました。さらにフォローが必要でしたら、コメント欄を開けていただくか、回答回数を増やしてください。

◎質問者からの返答

ありがとうございます。

たとえば

http://abc.jp/テスト/index.htmlをリダイレクトさせたい場合は

Redirect 301 /%e3%83%86%e3%82%b9%e3%83%88/index.html

ではだめなのでしょうか?

firefoxでは http://abc.jp/テスト/index.html

と表示され、

IEでは http://abc.jp/%E3%83%86%E3%82%B9%E3%83%88/index.html

と表示されています。


4 ● b-wind
●20ポイント ベストアンサー

Redirect 301 /%e3%83%86%e3%82%b9%e3%83%88/index.html

これはOK.

%E6%9D%B1%E8%8A%9D%E3%83%86%E3%83%83%%B7%E3%82%B9%E3%83%86%E3%83%A0/9%E3%83%86%E3%83%A0%E3%81%A8%E3%81%AF.html

これはこっちでもデコードできないな。

単純に URL エンコードが間違ってんじゃない?

URIエンコーダの結果:ミナトラボ

◎質問者からの返答

Redirect 301 /%e3%83%86%e3%82%b9%e3%83%88/index.html

これがまずリダイレクトしません。

上記URLはすいません、ダミーです。


5 ● b-wind
●20ポイント

Redirect 301 /%e3%83%86%e3%82%b9%e3%83%88/index.html

これがまずリダイレクトしません。

mod_alias - Apache HTTP サーバ

そりゃ文法が間違ってるからね。


上記URLはすいません、ダミーです。

ダミーでも別にかまわないけど、現状やってるやり方をもうちっと説明してくれないと

問題が何かさっぱりわからんよ?


あと、これは認識間違い。

meta refresh以外にて正しく301リダイレクト

meta タグによる遷移と 301リダイレクトは全く別の機能・方法だから。


もう一度言うけど、問題解決に至る情報がぜんぜん足りてないんでコメント欄でもなんでもいいから

説明しないと回答は付かないと思うよ?

◎質問者からの返答

すいません、

なんとか自力で解決しました。

お騒がせいたしました;;

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ