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

短いURLでは正しく動作することを確認しています。

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

回答の条件
  • URL必須
  • 1人5回まで
  • 登録:
  • 終了:2009/07/23 16:51:56
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:b-wind No.4

回答回数3344ベストアンサー獲得回数440

ポイント20pt

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エンコーダの結果:ミナトラボ

id:kazuhiko11

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

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

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

2009/07/22 09:58:44

その他の回答4件)

id:pahoo No.1

回答回数5960ベストアンサー獲得回数633

ポイント20pt

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


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

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

id:kazuhiko11

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

2009/07/21 17:34:50
id:sakuragaoka No.2

回答回数17ベストアンサー獲得回数3

ポイント20pt

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

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

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

 

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

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

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

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

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

 

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

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

  • Redirectディレクティブを使う方法

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

  • mod_rewriteを使う方法

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";

 

> ご教授願います。

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

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

id:kazuhiko11

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

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

こちらですね。

失礼しました;;

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

2009/07/21 17:37:21
id:pahoo No.3

回答回数5960ベストアンサー獲得回数633

ポイント20pt

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エンコード・デコードフォームで確認してみてください。


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

id:kazuhiko11

ありがとうございます。

たとえば

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

と表示されています。

2009/07/21 19:12:14
id:b-wind No.4

回答回数3344ベストアンサー獲得回数440ここでベストアンサー

ポイント20pt

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エンコーダの結果:ミナトラボ

id:kazuhiko11

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

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

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

2009/07/22 09:58:44
id:b-wind No.5

回答回数3344ベストアンサー獲得回数440

ポイント20pt

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

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

mod_alias - Apache HTTP サーバ

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


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

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

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


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

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

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


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

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

id:kazuhiko11

すいません、

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

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

2009/07/23 16:51:39

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません