2010-02-05 4 views
1

Je voudrais de l'aide avec de la magie de réécriture d'URL. J'ai des problèmes pour modifier la variable Request_URI.Comment modifier Request_URI en utilisant Apache ou PHP?

Je voudrais passer entre deux sites http://host.com/alpha et http://host.com/beta. Ils sont tous deux traités par le même script php. Ce script est http://host.com/index.php.

L'index.php s'attend à recevoir une variable GET SITE pour lui indiquer le site à afficher. Il utilise également le champ REQUEST_URI pour déterminer le contenu à afficher. Pour que cela fonctionne, les alpha ou beta doivent être supprimés de la demande d'origine. C'est là que je suis coincé. Par conséquent, le champ REQUEST_URI commence par/alpha/content/file et doit devenir/content/file.

J'ai essayé cela en utilisant mod_rewrite .htaccess:

RewriteCond %{REQUEST_URI} /(alpha|beta)(.*) 
RewriteRule .* index.php?site=%1 

index.php:

<?php 
echo "Site: " . $_GET['site'] . "<br/>"; 
echo "Request_URI: " . $_SERVER['REQUEST_URI'] . "<br/>"; 
//get_html($_SERVER['REQUEST_URI']); 
?> 

J'espère avoir plus de chance avec SetEnvIf et Alias ​​Apache.

Des idées sur la façon de faire ceci seraient grandement appréciées. Merci.

Répondre

2

assez facile à gérer:

RewriteRule ^(alpha|beta)/?(.*) /$2?site=$1 [R,L] 

Cela va rediriger temporairement (Code d'état HTTP 302) toute URL commençant par « alpha » ou « bêta » à une ressource sans « alpha » ou « bêta » dans le commençant mais étant ajouté en tant que chaîne de requête, associé à la variable de requête "site".

Exemple:

// Will be redirected to http://host.com/shoes/nike/order.php?site=alpha 
GET http://host.com/alpha/shoes/nike/order.php 

EDIT Cela ne compte pour les chaînes de requête fournis par l'appel GET d'origine. Si vous en avez besoin, faites ce qui suit:

RewriteRule ^(alpha|beta)/?(.*) /$2?site=$1 [QSA,R,L] 
RewriteRule .* index.php [NC,L] 

Cheers!

+0

ouais c'est ce que je cherche. Je ne l'ai pas encore travaillé. Je vois une erreur 404 .. – xer0x

+0

Vous devez mapper la redirection pour pointer votre index.php dans votre répertoire racine (juste une supposition, je ne connais pas votre mise en page) avec une autre règle. Cela vous permettrait de gérer tout dans votre index.php et aurait le bon REQUEST_URI pour savoir ce que le client a demandé. – aefxx

+0

Je n'étais pas sûr au début, mais ça marche maintenant! Merci! – xer0x

Questions connexes