2016-11-17 4 views
0

私はJoomla! 1つのJoomlaのインスタンスで複数のドメインが使用されているサイトを設定します。サイトのルートドメインはwww.pky.comです。私たちが購入した名前のリストの他のドメイン名を訪ねると、彼らはルートドメインに向けられますが、私はURIをテストすることによって見られる "サイト"の適切なドメイン名にリダイレクトするPHPスクリプトを使用しています。サイトのために使用されるURLのいくつかはexampleone.pky.com、exampletwo.pky.comなどregexを使ってURLリダイレクトの可能なすべての文字、数字、または文字をテストする

サイトのindex.phpファイルにおける当社のリダイレクトスクリプトはそうのように設定されている

<?php 
$domain = $_SERVER["HTTP_HOST"]; 
$requri = $_SERVER['REQUEST_URI']; 


if ((($domain == "pky.com") || ($domain == "www.pky.com") || ($domain == "citywestplace.pky.com") || ($domain == "www.citywestplace.pky.com") || ($domain == "gwplazahouston.com") || ($domain == "www.gwplazahouston.com") || ($domain == "greenwayplaza.pky.com") || ($domain == "www.greenwayplaza.pky.com") || ($domain == "postoakhouston.com") || ($domain == "www.postoakhouston.com") || ($domain == "postoakcentral.pky.com") || ($domain == "www.postoakcentral.pky.com") || ($domain == "sanfelipeplaza.com") || ($domain == "www.sanfelipeplaza.com") || ($domain == "sanfelipeplaza.pky.com") || ($domain == "www.sanfelipeplaza.pky.com")) && ($requri == "/index.php/citywestplace-marketing")) { 
    header("Status: 301 Moved Permanently"); 
    header("Location: http://www.citywesthouston.com$requri"); 
} 

私たちの主な問題の1つは、誰かがfoo.pky.comに入っても、そのサイトに表示され、それがスクリプトを壊すことです。文字、数字、その他の文字のすべてのバリエーションに適合する正規表現に変数を設定し、その変数をURLの一部として使用してルートドメインにリダイレクトさせる方法はありますか?

例えば:

$myvar = some regex here; 

if (($domain == "pky.com") || ($domain == "www.pky.com") || ($domain == $myvar . ".pky.com") || ($domain == "www" . $myvar . ".pky.com"))... 

あり、すべてこれを行うには良い方法である必要がありますが、私はまだ学んでいます。

ありがとうございます。

EDIT

だから私は追加しました:

if (((preg_match(`.*\.pky\.com`, $domain)) || (preg_match(`www\..*\.pky\.com`, $domain))) && ($menutype == "mainmenu")) { 
    header("Status: 301 Moved Permanently"); 
    header("Location: http://www.pky.com"); 
} 

を何かが現在のメニューの種類が "MAINMENU" であるpky.com & &の前に追加されているかどうかを確認します。私はAzizが言及した正規表現をチェックした。ただし、次のように入力してください:

foo.pky.comはまだurl foo.pky.comに行き、pky.comにリダイレクトされません。

+0

正規表現 '。* \。pky \ .com'はそれを行うべきです –

答えて

0

まず、あなたがホストを得るとき、あなたは、例えばsimple regexを使用することができます)(でもparse_urlからドメインを取得することができます。

それはドメインが pky.com

(substr($domain, -7) === "pky.com"); 
で終わるかどうかを確認することができますも、正規表現なし
$allowedUrls = [ 
    'test.com', 
    'google.com' 
]; 

if (preg_match(`#.*pky\.com$#gm`, $domain) || in_array($domain, $allowedUrls)) { 
    // OK 
} 

+0

ここで使用した正規表現は、最初に「#」を、最後に「#gm」を削除すると機能します。 –

+0

'##'はデリミタとして使用されますhttp://php.net/manual/en/regexp.reference.delimiters.php必要です – Robert

関連する問題