2010-08-24 7 views
0

Puis-je réécrire une URL en utilisant la valeur 6 de ?cat par exemple, et vérifier ma base de données MySQL pour la valeur 6 catégorie nom html en utilisant PHP MySQL & si oui, comment?PHP & MySQL url question réécriture

Courant de référence.

http://localhost/index.php?cat=6&sub1=8&sub2=24&sub3=81 

Nouvel outil de recherche affiché dans le navigateur.

http://localhost/html/basics/forms/select-tag/ 

Répondre

0

Découvrez mod_rewrite.

Vous devez ouvrir le fichier .htaccess (s'il n'existe pas, le créer) et inclure les lignes suivantes. Notez que RewriteEngine On devrait être écrit seulement une fois.

RewriteEngine On # Turn on the rewriting engine 
RewriteRule ^html/basics/forms/select-tag/([0-9]+)/?$ index.php?cat=$1 [NC,L] 
0

Oui. Fondamentalement, vous voudrez passer l'URL entière à travers un script de routeur en utilisant mod_rewrite. Le fichier .htaccess devrait avoir quelque chose comme ceci:

RewriteEngine On 
RewriteBase/ 

#if it's an existing directory 
RewriteCond %{REQUEST_FILENAME} -d [OR] 
#...or an existing file 
RewriteCond %{REQUEST_FILENAME} -f 
#serve it up 
RewriteRule ^(.+) - [PT,L] 

#else, direct to index.php 
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L] 

Puis, en index.php vous pouvez avoir quelque chose comme ceci:

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

qui aurait tous vos segments d'URL propre dans le tableau de demande de $ . Une fois que vous avez ces valeurs, vous pouvez vous connecter à la base de données, trouver ce que l'URL représente et sortir la page. Si ce n'est pas le cas, vous pouvez envoyer un en-tête 404 avec un message "Page non trouvée".

header('HTTP/1.0 404 Not Found'); 
echo '<p>Page not found</p>'; 

Voilà donc la technique de base de l'url propre. Si l'URL est la première, un désordre, vous suffit d'ajouter une logique pour vérifier que, et rediriger vers l'URL correcte propre:

if(isset($_GET['cat'])){ 
    //put some logic here 

    header("Location: http://localhost/".$the_clean_url); 
} 

Cette technique de base devrait résoudre votre problème avec quelques bricolages.