2010-11-09 5 views
1

J'ai une base de données MySQL avec 5000 éléments. Le tableau est structuré commeRéécriture d'URL avec PHP MySQL .htaccess & GET

id
produit Nom
contenu
produit url

Vous pouvez accéder à une page spécifique du produit en allant www.site.com/products/index.php?id = 123. Le fichier index.php utilise PHP pour obtenir l'ID pour rechercher dans la base de données MySQL et retourner le nom et le contenu du produit approprié. Comment puis-je faire au lieu de www.site.com/products/index.php?id=123, l'URL est réécrit ou redirigé vers www.site.com/products/product-url? Si je le fais avec .htaccess, le fichier index.php sera-t-il toujours capable de savoir quel ID utiliser pour rechercher l'URL du produit si l'ID n'est pas dans l'URL? Ou est-il possible de mapper des URL avec PHP et MySQL?

(je suis un noob quand il vient à ce genre de choses, de sorte que toute aide sera très appréciée. Merci.)

Répondre

4

Vous pouvez utiliser .htaccess et un RewriteRule. Ce qui suit redirigera une URL SEO vers index.php avec $_GET['product-url']. Vous aurez besoin de modifier votre code pour soit chercher le produit id ou utiliser le product-url directement. Les deux devraient être être unique dans votre tableau de produits.

RewriteEngine On 
RewriteBase/

# redirect product page from SEO URL 
RewriteRule ^products/([\w\d-_]+)/?$ products/index.php?product-url=$1 [L] 

Note: Je l'ai fait le product_url pour permettre que des lettres, des chiffres, des tirets et underscores. Je suggère une telle restriction. De plus, la barre oblique est facultative. De plus, cela ne réapparaîtra pas une chaîne de requête. Si vous en avez besoin, vous pouvez ajouter le drapeau QSA au RewriteRule.

+0

J'ai ajouté un commentaire sur les points dans l'URL de produit, mais j'ai juste supprimé l'extension .php et maintenant cela fonctionne comme un charme! Merci beaucoup. – user502543

+0

Je ne vois pas votre commentaire. Vous voulez des périodes dans l'URL de produit? Je déconseillerais cela. –