211 votes

Obtenir le domaine actuel

J'ai mon site sur le serveur http://www.myserver.uk.com .

Sur ce serveur, j'ai deux domaines :

one.com and two.com

J'aimerais obtenir le domaine actuel en utilisant PHP, mais si j'utilise $_SERVER['HTTP_HOST'] puis il m'affiche

myserver.uk.com

au lieu de :

one.com or two.com

Comment puis-je obtenir le domaine et non le nom du serveur ?

0 votes

Vous ne pouvez obtenir que l'URL primaire. Lequel de ces trois est le principal ?

2 votes

Comment vos deux domaines redirigent-ils les requêtes vers votre serveur ?

1 votes

@infgeoax probablement un cadre...

4voto

Manojkiran.A Points 312

Tout le monde utilise le parse_url mais il arrive que l'utilisateur transmette l'argument sous différents formats.

Pour y remédier, j'ai créé une fonction. Jetez-y un coup d'œil :

function fixDomainName($url='')
{
    $strToLower = strtolower(trim($url));
    $httpPregReplace = preg_replace('/^http:\/\//i', '', $strToLower);
    $httpsPregReplace = preg_replace('/^https:\/\//i', '', $httpPregReplace);
    $wwwPregReplace = preg_replace('/^www\./i', '', $httpsPregReplace);
    $explodeToArray = explode('/', $wwwPregReplace);
    $finalDomainName = trim($explodeToArray[0]);
    return $finalDomainName;
}

Il suffit de transmettre l'URL pour obtenir le domaine.

Par exemple,

echo fixDomainName('https://stackoverflow.com');

reviendra :

stackoverflow.com

Et dans certaines situations :

echo fixDomainName('stackoverflow.com/questions/id/slug');

Et il renverra également stackoverflow.com .

3voto

Greg Sidelnikov Points 19

Je sais que ce n'est peut-être pas tout à fait le sujet, mais d'après mon expérience, je trouve utile de stocker la nature WWW de l'URL actuelle dans une variable.

En outre, je vous invite à lire mon commentaire ci-dessous pour comprendre où je veux en venir.

Ceci est important pour déterminer si les appels Ajax doivent être envoyés avec "www" ou sans :

$.ajax("url" : "www.site.com/script.php", ...

$.ajax("url" : "site.com/script.php", ...

Lors de l'envoi d'un appel Ajax, le nom de domaine doit correspondre à celui de la barre d'adresse du navigateur. Erreur de sécurité non résolue dans la console.

J'ai donc trouvé une solution pour résoudre ce problème :

<?php
    substr($_SERVER['SERVER_NAME'], 0, 3) == "www" ? $WWW = true : $WWW = false;

    if ($WWW) {
        /* We have www.example.com */
    } else {
        /* We have example.com */
    }
?>

Ensuite, selon que $WWW est vrai ou faux, il lance l'appel Ajax approprié.

Je sais que cela peut sembler trivial, mais il s'agit d'un problème tellement courant qu'il est facile de trébucher.

1voto

cucu8 Points 271

Cette méthode rapide et pratique fonctionne pour moi.

Quelle que soit la manière dont vous obtenez la chaîne contenant le domaine que vous souhaitez extraire, c'est-à-dire en utilisant un super global -$_SERVER['SERVER_NAME']- ou, disons, dans Drupal : global $base_url, les expressions rationnelles sont votre ami :

global $base_url;
preg_match("/\w+\.\w+$/", $base_url, $matches);
$domain = $matches[0];

La chaîne de regex particulière que j'utilise dans l'exemple ne capturera que les deux derniers composants de la chaîne $base_url, bien sûr, mais vous pouvez ajouter autant de " \w +." comme souhaité. J'espère que cela vous aidera.

-2voto

Motion Points 1

Essayez simplement :

echo apache_request_headers()[3];

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X