Récupérer les premiers caractères d'une url

WRInaute discret
Bonjour,

Je cherche un script php (ou javascript) permettant de repérer la présence ou non du "www" dans une url.
(en effet, je suis chez un hébergeur gratuit ne permettant pas l'url rewriting donc je fais un script detectant si le visiteur vient du http:// ou du http://www, et je le renvois sur le www en redirection 301).

Je pense qu'il faut une variable qui renvoi l'url (http://site.com ou http://www.site.com) et qui analyse les 10 premiers caractères ; si parmis ces 10 caractères il y a "www", il bouge pas, sinon, il fait la 301.

Je pense que c'est un script javascript qu'il fait mais je ne m'y connais pas du tout et je n'ai pas trouvé de tel script sur le forum ou ailleurs ...

Merci.
 
Nouveau WRInaute
regarde ici -www.allocine.com
Mais ce n'est pas une 301, redirection javascript

test ici apres https://www.webrankinfo.com/outils/header.php

Code:
<script language="Javascript">
var myhost
var rExp

myhost = document.URL;
rExp = /allocine.com/gi;
myhost = myhost.replace(rExp, 'allocine.fr');
myhost = myhost.replace('default.html', '');
document.write(myhost);
document.location.href=myhost;
</script>
 
WRInaute discret
Merci, c'est pas mal.

Mais le problème c'est que je dois garder mes pages ; eux ils transfèrent leur .com vers leur .fr en effaçant totalement le .com ... moi je ne peux pas puisque mes pages avec le www ou sans le www sont les mêmes :)

Il me faudrait un if qui analyse si le visiteur est sur le www ou pas, et qui, si il n'y est pas, execute ce script javascript.
 
WRInaute discret
bipeurs a dit:
Je pense qu'il faut une variable qui renvoi l'url (http://site.com ou http://www.site.com) et qui analyse les 10 premiers caractères ; si parmis ces 10 caractères il y a "www", il bouge pas, sinon, il fait la 301.

j'ai un script comme ça, les 4 premiers caractères de $_SERVER['SERVER_NAME'] suffisent

Code:
<?
 function redirection_301($redirection='') {
  global $_SERVER;                          // compatibiliser les configs et versions PHP
  if(!$redirection) {return false;}         // si aucune adresse de redirection, alors avorter
  header('Location: '.$redirection);        // adresse de redirection
  header('HTTP/1.1 301 Moved Permanently'); // HTTP 301 canonique
  header('Status: 301 Moved Permanently');  // HTTP 301 exotique
  return true;
 }

 function normaliser_www() {
  global $_SERVER;                                                // compatibiliser les configs et versions PHP
  if(substr($_SERVER['SERVER_NAME'],0,4)=='www.') {return false;} // les WWW sont présents
  if($_SERVER['SERVER_NAME']=='localhost') {return false;}        // le cas de pré-production en localhost ???
  return redirection_301('http://www.'.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']); // redirection requise
 }

 if (!isset($_SERVER)) {$_SERVER=&$HTTP_SERVER_VARS;} // compatibiliser les configs et versions PHP
?>

si le code qui précède est dans le fichier 'redirection.php' alors un exemple d'utilisation pourrait être

Code:
<?php
 include_once('./redirection.php');
 if(normaliser_www()) {exit();} // WWW obligatoire

 echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">'."\n";
 echo "\n";
 echo '<html>'."\n";
 echo '<head>'."\n";
 echo ' <title>'.$_SERVER['SERVER_NAME'].'</title>'."\n";
 echo '</head>'."\n";
 echo "\n";
 echo '<body>'."\n";
 echo ' <p>'.$_SERVER['SERVER_NAME'].'</p>'."\n";
 echo '</body>'."\n";
 echo '</html>'."\n";
?>

les deux premières lignes sont à mettre dans toutes tes pages php qui doivent rediriger sur l'utilisation des 3W. en espérant que ça t'aidera. J'ai fait ce script il y a longtemps, alors teste le sur une page peu importante avant.

tisha
 
WRInaute discret
Merci, c'est parfaitement ce dont j'avais besoin.

Seulement ... ça ne fonctionne pas.

Quand je fais un echo $SERVER_NAME ça ne 'maffiche rien.
Quand je fais un echo $HTTP_HOST ça m'affiche bien membres.lycos.fr (c'est pour un site hébergé gratos chez lycos) mais quand j'ajoute le www dedans ... ça m'affiche toujours membres.lycos.fr !

:-(

Je comprends pas ...
 
WRInaute discret
si $_SERVER['SERVER_NAME'] te retourne un vide, alors tu es devant une impossibilité. quoiqu'il te reste tout de même la possibilité d'un courriel à lycos? je serais curieuse de savoir pourquoi SERVER_NAME est désactivé.

ton sous-domaine est 'membres' et rien d'autre... le reste c'est du wildcard, probablement que si tu tentais 'http://cretin.membres.lycos.fr/tonsite/' tu verrais afficher ton site comme si de rien n'était, sans changement d'url.

bref, tu l'as dans l'os. j'espère pour toi que je suis dans l'erreur, mais j'en doute.

tisha
 
Discussions similaires
Haut