• 締切済み

PHPで301転送をかけた時に無限ループをさせない方法はありますか?

PHPで301転送をかけた時に無限ループをさせない方法はありますか? SEO対策でindex.html付きのURLを無しに301転送をかけて統一したいのですが無限ループが起こります。 302転送だとループは起こりません。 .htaccessで制御するしか無限ループを抑える方法はないのでしょうか。

  • PHP
  • 回答数1
  • ありがとう数3

みんなの回答

回答No.1

これで回避できそうですか? <? if ($_SERVER['REQUEST_URI'] == "/index.html") {   header("HTTP/1.1 301 Moved Permanently");   header("Location: http://www.sample.com/"); } ?>

jack_jetjj
質問者

お礼

大変ありがとうございます。 試してみます。 まただめな場合相談させてもらいます。

関連するQ&A

  • htaccess rewrite 無限ループ

    すでにあるサイトにhtaccessを設置して、 rewriteで日本語のファイル名でアクセスさせる方法を模索しています。 例↓ ・「http://www.example.jp/index.php」でアクセスされたら「http://www.example.jp/インデックス」 にリダイレクト。 ・「http://www.example.jp/インデックス」でアクセスされたら「index.php」 を表示させる。 htaccessの例↓ Options +FollowSymLinks RewriteEngine on RewriteRule ^index\.php$ /インデックス [R=301,L] RewriteRule ^インデックス$ index.php [L] 上記の設定だと無限ループになってしまいます。 index.phpでアクセスされたら404を返す方法も考えましたが・・・もっといい方法はないでしょうか?

    • ベストアンサー
    • PHP
  • 無限ループを抜け出す方法を教えて下さい。

    ご覧いただきありがとうございます。 タイトルの通り、無限ループを抜け出す方法を教えて頂きたいです。 for( ; ; i++) { printf( "%ld", i ); } たとえば、上記の無限ループをキー入力待ちをすること無しに、キー入力があった場合に途中で抜ける方法はあるのでしょうか? ご回答のほどよろしくお願いいたします!!

  • 無限ループ??

     携帯にきたメールはPCにコピーを転送  PCにきたメールは携帯にコピーを転送したいんですが方法ってありますか 普通にしたら 無限ループになるかと・・・・

  • PHPを使い転送

    http://******/ (index.php) にアクセスすると 瞬時に http://******/index.cgi に転送するようにするには どうしたらいいのでしょうか ソースまたは、参照URLを 書いてくれるとうれしいです あとで補足されても困りますので 先に・・・・ 今使用しているサーバーが http://******/ (index.cgi を読み込んでくれないんです ですが PHP(index.php)ですと 読み込んでくれるので 転送PHPを必要としています

    • ベストアンサー
    • PHP
  • MS Exchangeの転送が無限ループに

    お世話になっております。 現在、社内でMS Exchangeを使用しており、そのメールを携帯電話に転送しております。そこで問題が起こったのですが、配信不能レポートが戻ってきた時に、設定した送信先に送信せずにサーバ側で自動的にアドレスを削除する方法(もしくは送信しない方法)はありますでしょうか。それができずにメールが無限にループしてしまい、サーバダウンすることがあります。 お手数をおかけしますが宜しくお願いいたします。

  • メールサーバの無限ループを対策する方法

    メールサーバの無限ループを対策する方法について教えてください。 環境:Linux メールサーバ:sendmail とあるサイトでsendmailで無限ループを対策する方法として ヘッダに識別できるIDなどを追加してループしてるかを判断すると書かれておりました。 この設定はどうのようにすればよいのでしょうか。 m4マクロで形式でヘッダの項目を記入したいとおもってます。 sendmail.cfに直接書くことでヘッダに追加されることは確認しましたが sendmail.mcでの書き方がわかりません。 また、ヘッダに追加した識別IDをどのようにループと判断するように設定すればよいか わかりません、なにか参考になるサイトや設定方法などわかる方教えて頂けますか?

  • 無限ループ

    元日に発生した能登半島地震で家族を亡くした遺族の方のニュースを見て、胸が痛むと同時にこんな事をふと思い付きました。 自分の愛する家族。 自分にとって大切な家族が、不幸にも、事故や災害で亡くなってしまったとします。 当然それは受け入れ難い事です。 もしかしたら、後を追って自らも命を投げ出してしまう人もいるかもしれません。 そんな絶望の淵にいるあなたの所に、神様でも悪魔でもなく不思議な生命体が現れ、再び愛する家族に会わせてくれると言いました。 それはどういう事かと言うと、愛する家族が亡くなったその日に戻り、無限にその日を繰り返すというものです。 ですので、その日に何が起こるか既に分かっているあなたは、その災いから家族を守る事が出来ます。 しかし、その日が終わると、また同じ日の朝に戻るという無限ループが待っています。 家族を失った悲しみからは解放されますが、決してその日から先に進む事は出来ず、いずれ神経が参る事でしょう。 仮にそれであなたが自らを命を絶ったとしても、その瞬間、また同じ朝に戻ります。 こうなってしまっては、この無限ループに身を置いている事そのものがもはや生き地獄のようなものです。 この無限ループから抜け出す唯一の方法は、元々その日に起こった通りのままでその日を終える事。 つまりそれは、あなたが再び家族を失う事です。 そこで質問です。 もしもあなたが家族を事故や災害で亡くした時に、上記に記した不思議な生命体がこんな無限ループの中で再び家族に会わせてくれるとしたらあなたは受け入れますか? それとも、家族を失ったその絶望の淵にいる今を受け入れて、一歩一歩前に進む道を選びますか?

  • PHPで静的ページ見せる方法について

    PHPでmod_rewrite(静的ページに見せる方法)について教えてください。 PHPで生成された動的ページを静的ページにしたく思い、「.htaccess」ファイルを使用し、 mod_rewriteを書き込んでいますがURL書き換えられず困っています。 どうかご教授お願いいたします。 以下「.htaccess」の内容と環境、実験状況です。 やりたいこと。 トップのURL http://○○○.net/ 動的のURL  http://○○○.net/detail/index.php?id=△  こうしたい  http://○○○.net/detai/△.html ※○○○の部分はURLです。△は数字でページによって変動します。 「.htaccess」の中身 ------------------------------------------------------------ 1行目  Options +FollowSymLinks 2行目  RewriteEngine on 3行目  RewriteCond %{HTTP_HOST} ^www.○○○\.net 4行目  RewriteRule ^(.*)$ http://○○○.net/$1 [R=301,L] 5行目  Options +ExecCGI 6行目  AddHandler cgi-script .cgi 7行目  AddHandler cgi-script .pl 8行目  Options +FollowSymLinks 9行目  RewriteEngine on 10行目 RewriteCond %{HTTP_HOST} ^www.○○○\.net 11行目 RewriteRule ^/detail/([0-9A-Za-z]+)\.html$ /detail/index.php?id=$1 [L] ------------------------------------------------------------ サーバーはレンタルサーバーのロケットネットです。 最初の4行はWWWなしのURL統一のために書き込んでいます。 次の3行(5~6行目)はロケットネットではcgiを使用するために必要なものということでしたので 書き込んでいます。 8~9行目からが静的ページに見せたいがために書き込んだ内容です。 サイトのディレクトリ構造は以下の通りです。 index.php (第1階層) detailフォルダ (第1階層)   └ index.php(第2階層) 第1階層のindex.phpには以下のような記述がしてあります。(GET) <p><a href="/detail/index.php?id=<?=$line[0]?>">・<?=$line[1]?></a></p> 第2階層のindex.phpには以下のような記述がしてあります。 $ID=$_GET['id']; 制作者のPHPレベル Lv3 Next Level あと56くらぃ (はじめたばかりの初心者です) 上記のような「.htaccess」の中身ですと、URLは特に変更なく、 http://○○○.net/detail/index.php?id=△のままです。 wwwなしの統一はできています。cgiは普通に使えてます。 ロケットネット側に一度お問い合わせしたところ、 以下のような内容でできます。と返答がきました。 RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^/sample/(.*)$ /shop/sample/$1 できませんでした… 他に以下のような感じのものをためしてみました。 RewriteRule部分を RewriteRule ^/detail/(.*)$ /detail/index.php?id=$1 や RewriteRule ^http://○○○.net/detail/(.*)$ http://○○○.net/detail/index.php?id=$1 フルパスにしてみたり… RewriteRule ^(.*)$ index.php?id=$1 別に「.htaccess」ファイルを作り「detail」フォルダに入れてみたり… できませんでした… もう何がいけないのかぜんぜんわかりません… こういうところに書き込むのは初めてですが、親身にしていただけると幸いです。 ご教授のほどどうぞよろしくお願いいたします。

    • ベストアンサー
    • PHP
  • ホームページのリダイレクト失敗で無限ループへ

    .htaccess でサイトの引越しを試みましたが失敗して無限ループに入ってしまい、サーバ内のホームページへアクセスすることができなくなりました。 いろいろ調べてみてもどうしてもわからないので質問させてもらっています。わかる方がいましたら解決方法を教えていただきたいです。よろしくお願いします。 さくらインターネットのサーバ内に2つのホームページをそれぞれのドメインで設置しています。ドメイン名は例、( )内は(サーバ内ディレクトリ)です。 ドメイン1:example1.com (home/example/www)  ドメイン2:example2.com (home/example/www/NEW) ドメイン1の階層を一つ下に移動したかったのでOLDというフォルダを作り、www 階層のドメイン1関連ファイルを全てOLDに移動し、.htacccess をwwwの階層に設置しました。記述内容は以下です。      RewriteEngine on      RewriteRule (.*) http://www.example2.com/$1 [R=301,L] htaccess のリダイレクトの書き方をネットで検索し、なんとなくマネて書きました。移動したいサイトはドメイン1だったのですが、間違ってドメイン2を記述内に書き込んでしまいサーバへアップロードしました。ドメイン1サイトへアクセスすると、 「ページの自動転送設定が正しくありません。このアドレスへのリクエストに対するサーバの自動転送設定がループしています。」 と表示がでて、アドレスバーには、www.example2.com/NEW/NEW/NEW/NEW/NEW/NEW/NEW/NEW/ と表示されました。慌てて htaccess をサーバから削除して、ドメイン1関連ファイルを全て元の位置に戻しましたが、アクセスしても同じようにループに入ったアドレスが表示されるようになりました。ドメイン2へアクセスして同じループに入ってしまいます。 どうしたらこのループを抜けれるのでしょうか? ドメイン1は サーバ内の home/example/www/OLD、ドメイン2はそのまま(home/example/www/NEW)へ移動したいです。どう htaccessに記述すれば、(www.)example1.comへアクセスした際にNEWフォルダ内のindex.html へリダイレクトをかけれますか?(www.)example2.comへのアクセスができるようになるためにはどうしたら良いでしょうか? ちなみにサイトの移動はhtmlファイルが多いので .htaccess で行いたいです。 本当にどうすれば良いかわからず困っています。 わかる方がいましたら、宜しくお願い致します。

    • ベストアンサー
    • HTML
  • .htaccessでリダイレクトさせたいのですが、単純転送ではありませ

    .htaccessでリダイレクトさせたいのですが、単純転送ではありません。 アクセス先に応じて転送先を変えたいです。 ルール通りではないので、人力的な転送になるかと思います。 http://hogehoge.net/old/ というドメインとディレクトリがあったとします。 うち、oldのディレクトリ及びそれ以下のアクセスを転送させたいです。 この場合、oldディレクトリに.htaccessを置いて転送させればいいかと思うのですが、 以下のような場合はどういう記述をすれば実現できますでしょうか? 1、/old/index.php?p=1と/old/index.php?p=2は、http://mogemoge.net/new/1.htmlへ転送 2、/old/index.php?p=3と/old/index.php?p=5は、http://mogemoge.net/new/2.htmlへ転送 3、/old/index.php?p=4は、http://mogemoge.net/new/3.htmlへ転送 4、上記以外(oldディレクトリ以下、index.php、index.php?p=6など)は全て、http://mogemoge.net/new/index.htmlへ転送 .htaccessの記述経験がなく、色々調べてはみたのですが、よく分かりませんでした。 どうかよろしくお願いいたします。

専門家に質問してみよう