2010-11-29 4 views
7

Je suis un programmeur assez qualifié, mais quand il s'agit de RegEx et de réécriture, je suis un n00b total. Je veux convertir une URL deComment convertir une chaîne de requête PHP en une URL à barre oblique?

http://www.example.com/lookup.php?id=1 

à

http://www.example.com/lookup/1/item/ 

où « élément » fait référence au nom d'un élément dans une base de données qui est regardé-up. J'utilise LAMP (Linux, Apache, MySQL, PHP) et je ne peux pas, pour la vie de moi, comprendre comment convertir les URL afin qu'ils soient SEO friendly.

+1

On dirait u peur them.Please récupérer une copie de maîtrise des expressions régulières. –

+0

Je voudrais également recommander Regular Expressions Cookbook. – Leo

Répondre

4

exemple .htaccess simple:

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteRule ^lookup/([a-z0-9\-]+)/item/?$ /lookup.php?id=$1 
</IfModule> 

Cette expression correspondra alphanumérique (également reconnaître des tirets) chaîne de longueur comme le 'id'. Vous pouvez limiter ceci à juste numérique en changeant la regex à ([0-9]+).

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteRule ^lookup/([a-z0-9\-]+)/([a-z0-9\-]+)/?$ /lookup.php?id=$1&view=$2 
</IfModule> 

Celui-ci correspondra /lookup/123/some-text/-/lookup.php?id=123&view=some-text

+1

Ça a marché comme un charme! Merci beaucoup! –

0

Voulez-vous rediriger l'ancienne URL vers la nouvelle? Ou cherchez-vous à lire dans ces URL "amicales" et ensuite les faire se comporter comme l'ancienne URL?

Si c'est le dernier, jetez un oeil à Net_URL_Mapper comme un moyen d'analyser et de rediriger ces liens assez facilement.

1

Jetez un oeil sur les URL de réécriture htaccess! :)

Voici votre exemple:

RewriteRule ^lookup/(\d+)/(.*)$ /lookup.php?id=$1&name=$2 

Lorsque vous accédez à lookup/123/my-product/, il va appeler le fichier interne lookup.php?id=123&name=my-product.

+0

Merci à tous, c'est exactement ce dont j'ai besoin! –

+0

Maintenant, le problème est que les autres pages qui suivent le format ne fonctionnent pas. Je veux obtenir une autre page http://www.example.com/category.php?id=1 à apparaître en tant que http://www.example.com/category/1/name/ –

+0

Que faire si le site Web est dans le sous-dossier? – Piero

Questions connexes