- 締切済み
リダイレクトで「自動転送設定がループしています」
サイトリニューアルに伴いディレクトリ構造が変わるので、.htaccessで以下のように書いてリダイレクトしようと思いましたが、「このアドレスへのリクエストに対するサーバの自動転送設定がループしています。」と出てリダイレクトが出来ません。 Redirect permanent /aaa/bbb/ccc/xxx.html http://hoge.com/aaa/123 試しにリダイレクト先を全く別のURLにしてみたら正常にリダイレクトされるので、上記の記述自体は問題ないと思うのですが、新しいサイトにはdrupalを使っていて、.htaccessには以下の内容が予め記述してあります。何かバッティングしているのでしょうか? <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} !=/favicon.ico RewriteRule ^(.*)$ index.php?q=$1 [L,QSA] </IfModule> PHPは5.2.5です。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
RedirectMatch ^/aaa/bbb/ccc/xxx.html$ http://hoge.com/aaa/123
- mikemike7
- ベストアンサー率87% (97/111)
>転送先のurlはCMSで設定したエイリアス(パーマリンク)ですので「.html」は入りません。 あれ? Redirect permanent /aaa/bbb/ccc/xxx.html http://hoge.com/aaa/123 なので、xxx.htmlならこちらに。ということじゃないです? 例として.htmlで終わるようにしてるだけかなあ。 この部分がどういう指定になっているかわからないので、 何ともいえないですが、 <FilesMatch "\.(engine|(省略)|entries|format)$"> Order allow,deny </FilesMatch> となっているということは、デフォルトは Order deny,allow として拒否してるってことです? でもindex.phpはアクセス可能なはずだから、そう考えると変ですね。 マッチする文字列があまり含まれたくない文字列が多いので、orderが逆だったり? まあ、あまりしないでしょうが、アクセスが拒否だった場合に、 ErrorDocument 403 http://hoge.com/403.html みたいにhttp付きで指定されていて、なおかつエラー表示用のページが存在しなかったりとか、転送させたいURLが指定されている場合はループになるみたいです。 あとは参考URLに書かれているような事例ですかねえ。 マッチさせるものが、転送先でも指定されていて無限ループ。 どういうURLでアクセスしたら無限ループになるとか、リダイレクトの正式な形式とか、サーバー内の構成とかわからないので、難しいですね。
お礼
ご回答ありがとうございました。 御礼が遅くなり失礼しました。 アドバイスを参考にいろいろ試してみたのですが、うまくいきませんでした。 今回は別の方法が見つかったので.htaccessでのリダイレクトはあきらめることにします。
- mikemike7
- ベストアンサー率87% (97/111)
同じような環境を作ってみましたが、無限ループにはなりませんでした。 とりあえず、転送させるのはファイル単位のようなので http://hoge.com/aaa/123 を http://hoge.com/aaa/123/xxx.html にしてみてはどうでしょう。 駄目なら /aaa/123/xxx.html が存在するかをチェック。 それでも駄目なら、更に他の要素が加わっている可能性があるかもしれません。
お礼
ご回答ありがとうございました。 御礼が遅くなり失礼しました。 アドバイスを参考にいろいろ試してみたのですが、うまくいきませんでした。 今回は別の方法が見つかったので.htaccessでのリダイレクトはあきらめることにします。
補足
ご回答どうもありがとうございます。 同じドメインにリダイレクトするとどのファイルにリダイレクトしても同じでした。転送先のurlはCMSで設定したエイリアス(パーマリンク)ですので「.html」は入りません。 以下は、.htaccess全体(コメント以外)です。質問に書いたところの他に影響がありそうな部分はないでしょうか? <FilesMatch "\.(engine|inc|info|install|make|module|profile|test|po|sh|.*sql|theme|tpl(\.php)?|xtmpl|svn-base)$|^(code-style\.pl|Entries.*|Repository|Root|Tag|Template|all-wcprops|entries|format)$"> Order allow,deny </FilesMatch> Options -Indexes Options +FollowSymLinks ErrorDocument 404 /index.php <Files favicon.ico> ErrorDocument 404 "The requested file favicon.ico was not found. </Files> DirectoryIndex index.php <IfModule mod_php5.c> php_value magic_quotes_gpc 0 php_value register_globals 0 php_value session.auto_start 0 php_value mbstring.http_input pass php_value mbstring.http_output pass php_value mbstring.encoding_translation 0 </IfModule> <IfModule mod_expires.c> ExpiresActive On ExpiresDefault A1209600 <FilesMatch \.php$> ExpiresActive Off </FilesMatch> </IfModule> <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} !=/favicon.ico RewriteRule ^(.*)$ index.php?q=$1 [L,QSA] </IfModule>
お礼
ご回答ありがとうございました。 御礼が遅くなり失礼しました。 アドバイスいただいた方法を試してみましたが、うまくいきませんでした。 今回は別の方法が見つかったので.htaccessでのリダイレクトはあきらめることにします。