3

PHP でコードを実行しようとしていますが、URL がWeb サイトのエントリ ポイントに正確にある場合のみ: http://mywebsite.com。したがって、具体的にはその URL のみで、その後は何もありません。複数のPHP IF ELSEステートメントを試して取得しようとした後、私は困惑しています。非常に近いと感じています。

<?php $host = $_SERVER['HTTP_HOST']; if($host == "www.mywebsite.com" or $host == "mywebsite.com") { ?> MYHTML1SHOWS <?php } else { ?> MYHTML2SHOWS <?php } ?>

これにより、ほとんどの訪問者が mywebsite.com にアクセスするときにドメインに表示されることに成功しましたが、その後のすべてのサブ ファイル/ページ/ディレクトリで作業を続けています。これは100%望ましくありません。

そこで、MYHTML2 が私のすべてのページをターゲットにするように表示する ELSEIF のような回避策を考えました。それらはすべて国に割り当てられたディレクトリ ( /au/ 、 /asia/ 、 /nz/ 、 /uk/ など) 内にあるためです。

<?php } elseif (stripos($_SERVER['REQUEST_URI'],'/au/') !== false) { ?> HTML3 <?php } ?>

これは機能しませんでしたが、試してみる価値はありました (私が行った以前の Web サイトの独自の IF ステートメントで機能しますが、PHP でより優先される最初の IF ステートメントと衝突することを理解しています)。助けてくれてありがとう、これは私を困惑させましたが、これまでになく役に立ちます。このようにコードを表示するだけで、ネット上に同様の質問はありませんでした。

(背景: mywebsite.com のエントリ ポイントにのみ表示される「国セレクター」を実装しています。国ごとに独自のサブディレクトリ内に既に設定しているため、顧客が国セレクターを表示する目的はありません。これらのアドレスの 1 つに直接送信されます)。

4

1 に答える 1

0

あなたはおそらく Apache の mod_rewrite で何らかの魔法を使っているでしょう...そうでない場合は、そこから探し始めるのがよいかもしれません。あなたが解決しようとしている問題は、httpd.confまたは(有効になっている場合).htaccessを介して、Apacheを介して行うのが最善のようです。

http://httpd.apache.org/docs/current/mod/mod_rewrite.html

それ以外の場合は、$_SERVER変数$_SERVER['PHP_SELF']$_SERVER['REQUEST_URI']がおそらく役に立ちます。

http://www.php.net/manual/en/reserved.variables.server.php

$_SERVER['HTTP_HOST']要求されたパスではなく、ドメイン名のみをチェックします。これはあなたが説明したとおりですが、あなたが望むものではないようです。

于 2012-11-28T05:35:54.887 に答える