質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.50%
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

PHP

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

Q&A

解決済

3回答

2009閲覧

phpでheaderのget行を取得したい。

redsan

総合スコア12

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

PHP

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

0グッド

0クリップ

投稿2016/05/23 14:58

編集2016/05/23 15:03

centos6.7webserverで簡単なhpを作っています。

mydomain/test/test*.htmlからmydomain/test.phpに
302redirectしたのですがtest.phpにてrefererを取得しても
できませんでした。

server内部からfirefoxアドオンにてtest.phpでheaderを確認すると


http://domain.com/test.html //リダイレクト元url(取得したいurl)

GET /test.html HTTP/1.1
Host: domain.com
User-Agent: Firefox
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8
Accept-Language: ja,en-US;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: keep-alive

HTTP/1.1 302 Found
Date:
Server: Apache
Location: http://domain.com/new.php //リダイレクト先url
Content-Length: 211
Connection: close
Content-Type: text/html; charset=iso-8859-1

こうなっています。

そして

$headers = getallheaders();
var_dump($headers);

これでhostはとれましたが
リダイレクト元url(取得したいurl)がとれませんでした。

forefoxでget行は確認できますが
getallheadersでは確認できないので
困っています。

phpでこのget行を取得して
リダイレクト元url(取得したいurl)を変数に入れてから
その内容の一部を書き換えて表示したいです。
よろしくお願い致します。

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

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

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

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

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

guest

回答3

0

ベストアンサー

refererはプライバシーやらセキュリティーやらの理由でクライアント側からフィルターされやすい項目なのであまり参考にするべき情報じゃないです。test*.htmlのリダイレクトでそれぞれのリダイレクト先のURLにGETをつけておくとかどうでしょうか?
/test/testhoge.html → http://yourdomain/test.php?q=hoge
/test/testpiyo.html → http://yourdomain/test.php?q=piyo
で $_GET[’q’]で回収
とかですかね?

また、リダイレクトをmeta要素でやるならjavascript + cookieとかでもできそうです。

投稿2016/05/23 15:57

oskbt

総合スコア1895

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

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

redsan

2016/05/23 19:21

教えていただいたことをやってみようと調べていたのですが すみません、よくわからなかったです。 たぶんGET['q']は /test/testhoge.html → http://yourdomain/test.php?q=hoge /test/testpiyo.html → http://yourdomain/test.php?q=piyo リダイレクト元がhogeなのかpiyoなのかで リダイレクト先を分ける方法だと思いますが リダイレクト先にhttp://yourdomain/test.php?q=hoge と書いてもリダイレクト元は取れないみたいです。 やっていて要点が見えてきたので書いてみます。 A.htmlをB.phpに転送 (302)  B.phpでA.htmlというurlを取得 それを変数に格納。 それにhost要素をつければ元urlに。 ちょっと難しく考えすぎていました。 ここまでなんですがなにかいい方があれば教えてください。 注文が多くすみません。 リファラーを使わない。 htmlの編集もしない。 httpd.confの追記は可能。
退会済みユーザー

退会済みユーザー

2016/05/23 21:15

リダイレクト先をhttp://yourdomain/test.php?q=hoge としてtest.phpで$_GET['q']を取得してみてください。
guest

0

リダイレクト元の、mydomain/test/test*.html をスクリプトにして、そこでリダイレクト時に取得するしか無いと思います。

投稿2016/05/23 15:19

otn

総合スコア84421

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

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

redsan

2016/05/23 15:37

各リダイレクト元ファイルをphpに変えてそこで現在のurlを取得し referer送信してそれをリダイレクト先で取得しないとできないということでしょうか。 もうひとつ教えて欲しいのですがこのケースではなぜrefererがないのでしょうか。 リダイレクト元htmlにrefererタグがないからなのでしょうか。
otn

2016/05/23 16:11 編集

各リダイレクト元ファイルをphpに変えてそこで現在のurlを取得しDBに保存するという意味です。リダイレクト先での取得は不可能です。 > このケースではなぜrefererがないのでしょうか。 refererはブラウザが付けます。別のウェブページのリンクから来た以外ではrefererは付きません。
redsan

2016/05/25 00:09

そうなんですね、勉強になりました。 ありがとうございました。
guest

0

meta refreshでリダイレクトさせた際にリファラが送られるかどうかはブラウザに依存します。
今回はどのような方法でリダイレクトされているのでしょうか?

JavaScriptでのリダイレクトであれば、リファラは残るのではないでしょうか。
古いIEは残らなかった様子ですが・・・
ちょっと違うSEO観点の記事ですが参考になさってください。
https://sem-technology.info/ja/google-analytics/javascript-redirect-best-practice

投稿2016/05/24 07:04

munyagu

総合スコア479

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

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

redsan

2016/05/25 00:07

回答ありがとうございます。 httpd.confのmod_rewrite302です。 サーバー内部からブックマークで飛んで確認していたので うまくいかなかったようです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問