🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

リダイレクト

プログラムの入力元や出力先を通常とは別の場所に転送させることをリダイレクトと呼びます。

.htaccess

Apacheウェブサーバーにおいて、ディレクトリ単位で設置及び設定を行う設定ファイルを指します。

Q&A

解決済

2回答

747閲覧

phpでheader を使った301リダイレクトが一部効かず画面が真っ白になる

fkshin

総合スコア12

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

リダイレクト

プログラムの入力元や出力先を通常とは別の場所に転送させることをリダイレクトと呼びます。

.htaccess

Apacheウェブサーバーにおいて、ディレクトリ単位で設置及び設定を行う設定ファイルを指します。

0グッド

0クリップ

投稿2021/03/03 05:26

編集2021/03/04 03:12

現在既存のサイトから既存のサイトへのリダイレクトを仕込んでいるところなのですが、
「私より以前に作業したものに関してはリダイレクトがきくけど私が作業したものは効かない」
という現象が起こっています。

また、自分があとから記載したものに関しては真っ白の画面になってしまって、301もきいてるのかきいてないのかわからない状態になってしまいます。
どうしたらいいかお手上げでして、開発ツールで確認してみたところ、index.phpは読み込むものの最初の下記のheader部分から下が読み込まれていない感じになっています。

もちろん記載漏れや書き間違いなどの可能性は精査した上です。

php

1<?php 2 if($_SERVER['PHP_SELF'] == "/2016/jpn/product/acGen/index.php"){ 3 header("Location: https://hogehoge/acgen/",true,301); 4 exit(); 5 }else if($_SERVER['PHP_SELF'] == "/2016/jpn/product/cellec/index.php"){ 6 header("Location: https://hogehoge/cellecv/",true,301); 7 exit(); 8 }else if($_SERVER['PHP_SELF'] == "/2016/jpn/product/lipocel/index.php"){ 9 header("Location: https://hogehoge/lipocel2/",true,301); 10 exit(); 11 }else if($_SERVER['PHP_SELF'] == "/2016/jpn/product/tribeam/index.php"){ 12 header("Location: https://hogehoge/tribeampremium/",true,301); 13 exit(); 14 }else if($_SERVER['PHP_SELF'] == "/2016/jpn/product/edgeone/index.php"){ 15 header("Location: https://hogehoge/edgeone/",true,301); 16 exit(); 17//ここにコピペ的な具合で書き足して行くもののうまくいかず 18 } 19 20 require_once ($_SERVER["DOCUMENT_ROOT"]. "/include/Define.include.php"); 21 require_once (__ROOT_DIR__. "include/Link.include.php"); 22 23 $DbClient = new DbTableList; 24 $Warning = new Messages; 25 $ImgPR = new ImageProcess; 26 27?>

このexit();から下に同じようにコピペしてリダイレクトを足していったのですが、これに追記するとリダイレクトが効きません。

php

1<?php 2 if($_SERVER['PHP_SELF'] == "/2016/jpn/product/acGen/index.php"){ 3 header("Location: https://hogehoge.com/products/acgen/",true,301); 4 exit(); 5 }else if($_SERVER['PHP_SELF'] == "/2016/jpn/product/cellec/index.php"){ 6 header("Location: https://hogehoge.com/products/cellecv/",true,301); 7 exit(); 8 }else if($_SERVER['PHP_SELF'] == "/2016/jpn/product/lipocel/index.php"){ 9 header("Location: https://hogehoge.com/products/lipocel2/",true,301); 10 exit(); 11 }else if($_SERVER['PHP_SELF'] == "/2016/jpn/product/tribeam/index.php"){ 12 header("Location: https://hogehoge.com/products/tribeampremium/",true,301); 13 exit(); 14 }else if($_SERVER['PHP_SELF'] == "/2016/jpn/company/event/workshop/index.php"){ 15 header("Location: https://hogehoge.com/event/",true,301); 16 exit(); 17 }else if($_SERVER['PHP_SELF'] == "/2016/jpn/product/edgeone/index.php"){ 18 header("Location: https://hogehoge.com/products/edgeone/",true,301); 19 exit(); 20 } 21 //smoothcool is /2016/jpn/product/smoothcool/index.php inline code 22 require_once ($_SERVER["DOCUMENT_ROOT"]. "/include/Define.include.php"); 23 require_once (__ROOT_DIR__. "include/Link.include.php"); 24 25?>

この場合考えられる可能性はなんだと思うか、知恵を貸していただけたら幸いです。
.htaccessだろうかとも考えているのですが…

よろしくお願い致します!

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2021/03/03 05:29 編集

どのように書きしたのか、どう確認したのか書かれてないので回答ほとんど無理なのですが、デバッグはされたのでしょうか。 対応表を配列で作ったほうが幾つも分岐書かずに済むとは思いますが。
fkshin

2021/03/03 06:05

これがサーバーを触ることが出来ずサイトのデータを貰っただけでして… 「すでにリダイレクトされてるから、そこに追記したら終わりだから!」 と言われたのを鵜呑みにした形でして…
fkshin

2021/03/03 06:06

書き足した内容も追記します!ありがとうございます!お待ちください!
hoshi-takanori

2021/03/03 06:24

curl -v や Postman などで古い URL に直接アクセスして、どういうレスポンスが返ってくるか確かめてみては。
fkshin

2021/03/03 06:45

Postmanって、簡単に言うとテストサイトを作れるサービスみたいなものなんでしょうか?? 一度サーバーのデータをごっそりもらって、構築してから検証する以外なさそうですかね……
fkshin

2021/03/04 03:05

ありがとうございます! なるほど… 今原状だと 「既存のphpに書き足せばできるだろう」 から始まって 「画面が真っ白になってしまう!」 というところで止まっていたので、一度しっかり勉強したほうがいいのでしょうか…実質案件として動いてしまっている都合上一回この原因を突き止めることができればと思ったのですが…… ブラウザの開発ツール HTTPレスポンス で少しググってみます!ありがとうございます!
hoshi-takanori

2021/03/04 05:58

「原因を突き止める」ための第一歩が HTTP レスポンスを確認することだと申し上げております。 (それはそれとして、Web の仕組み (≒ HTTP) を勉強することをお勧めします。)
guest

回答2

0

どうしたらいいかお手上げでして、開発ツールで確認してみたところ、index.phpは読み込むものの最初の下記のheader部分から下が読み込まれていない感じになっています。

hedaer() の後に、exit() しているのが原因では?

投稿2021/03/05 05:43

phper.k

総合スコア3923

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fkshin

2021/03/06 04:44

header()のあとは毎回exit()しないと機能しないと思っていたのですが、違うのですか!? if($_SERVER['PHP_SELF'] == "/2016/jpn/product/acGen/index.php"){ header("Location: https://hogehoge.com/products/acgen/",true,301); exit(); }else if($_SERVER['PHP_SELF'] == "/2016/jpn/product/cellec/index.php"){ header("Location: https://hogehoge.com/products/cellecv/",true,301); exit();    〜〜〜 を if($_SERVER['PHP_SELF'] == "/2016/jpn/product/acGen/index.php"){ header("Location: https://hogehoge.com/products/acgen/",true,301); }else if($_SERVER['PHP_SELF'] == "/2016/jpn/product/cellec/index.php"){ header("Location: https://hogehoge.com/products/cellecv/",true,301); 〜〜〜 exit(); } ということですか??
fkshin

2021/03/06 08:19

コメントありがとうございます! 書き足し前はこの状態で動いていて、書き足し後に動かなくなったので追記すればいいだけなのかと思っていたのですが、そういうことではないのでしょうか…… できれば答えが知りたかったのですが、自分なりに調べてみます!ありがとうございます!
phper.k

2021/03/06 08:38

調べてみてわからないところを聞いてください。
phper.k

2021/03/06 08:47

Teratail というサイトでは、一応 「作業依頼のような投稿を推奨していません teratailは課題や仕事を無償でやってもらえる場ではありません。好意の上に成り立つ助け合いの場なので、相手を気遣った丁寧な質問を心がけましょう。」 と明記されているので、そのものズバリの回答はつけにくい。 あなたの代わりに仕事するのであれば、それは有償でやるべきものですし。
fkshin

2021/03/06 11:23

ありがとうございます! 勉強になります! わからないところを伺います!
guest

0

自己解決

サーバー情報をいただいて、クライアントのサーバーに入ってみたところinclude先のファイル内にスペースがあってエラーが出ていたようでした…!

皆様ありがとうございました!
httpに関して勉強になりました!
ありがとうございます!

投稿2021/03/09 08:14

fkshin

総合スコア12

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問