2009-07-22 7 views
0

Ma question et ce qui va malcomment puis-je les segments au large de la uri

est quand j'ai deux segments

exemple: www.xxx.nl/products/id~~V~~3rd

et J'ai cela dans le htaccess

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L] 

est-il une solution, ou est-ce Caust par l'hôte

merci d'avance, Richard

Répondre

0

Le chemin URI demandé et la requête sont dans $_SERVER['REQUEST_URI']. Vous pouvez obtenir les segments avec ceci:

$_SERVER['REQUEST_URI_PATH'] = preg_replace('/\?.*/', '', $_SERVER['REQUEST_URI']); 
$segments = explode('/', ltrim('/', $_SERVER['REQUEST_URI_PATH'])); 
+0

mais pourquoi pas dans l'URL de la variable get, juste pour plus de clarté – Richard

+0

Vous n'avez pas besoin de transmettre l'URL demandée dans un paramètre lorsqu'il est déjà présent. – Gumbo

+0

non, ce n'est pas ce que je veux. J'ai besoin des adresses logiques. – Richard

2

Vous pouvez utiliser la fonction parse_url pour analyser une URL et séparer dans les parties pertinentes (en supposant qu'il est une URL valide).

+0

merci, j'en avais besoin pour un webservice. Je ne peux toujours pas obtenir ma tête complètement – Richard

0

L'URL transmise à index.php n'inclura jamais le nom d'hôte, le port ou la chaîne de requête. (Source: mod_rewrite docs).

Étant donné que le reste de l'URL est séparé par des barres obliques, vous pouvez utiliser explode pour le transformer en tableau.

$uri_segments = explode('/', $_GET['url']); 

Remarque: Ce que le tableau contient réellement dépend de l'emplacement de la RewriteRule. Si c'est dans un fichier .htaccess ou un bloc <Directory>, des parties du bloc correspondant seront manquantes (tout ce qui précède le répertoire courant dans l'URL).

+0

merci, je l'ai pour utiliser REST Je peux maintenant utiliser une classe pour le premier segment, le second pour la méthode, le troisième pour d'autres variables. Le problème ci-dessus était lié à un fichier css qui n'a pas démarré avec une barre oblique. Maintenant je peux aller voir le reste. – Richard

Questions connexes