7
votes

Comment transformer l'URL dynamique en URL statique

Je développe un site Web utilisant PHP et Apache. Je veux transformer mes URL de

www.example.com/book.php?book=title

dans quelque chose comme ça, si c'est possible bien sûr:

www.example.com/book/title

Notez que le titre des livres est unique et ne peut pas être répété.

J'ai lu à ce sujet, mais aucun des messages n'était assez clair pour un débutant comme moi. Connaissez-vous un didacticiel qui explique cela?

Merci.


0 commentaires

5 Réponses :


2
votes

La fonctionnalité que vous recherchez est appelée «réécriture d'URL».

Vous pouvez le faire manuellement: vous expliquez le motif en utilisant une expression régulière et le serveur Web traduit les demandes. Avec Apache, il est communément trouvé dans les fichiers HTACCESS ou Directyle dans le httpd.conf. Voir Doc officiel. Ici: http://httpd.apache.org/docs/2.0/misc/ rewriteguide.html p>

Ce n'est pas "que" facile à configurer cependant, débogage des expressions régulières en particulier. P>

En ce qui concerne votre problème, essayez une règle comme celle-ci: P>

RewriteEngine on 
RewriteRule ^book/(.*)$ book.php?book=$1 [L]


0 commentaires

3
votes

Voici la façon dont Kohana (et 99,99% des cadres PHP) est-il

Ajoutez un fichier .htaccess (si vous utilisez Apache) xxx

ceci redirige toutes les URL à index.php. index.php sera une sorte de contrôleur frontal qui charge des scripts basés sur l'URL

donc dans votre exemple:

localhost / book / titre

index.php serait chargé. Cela irait dans l'URL et obtiendrait la page (contrôleur) à charger qui fera réellement tout le travail. Dans ce cas peut-être des livres.php. books.php obtiendrait le titre du livre de l'URL, puis recherchez une base de données ou faire ce qu'il faut avec ce nom.


0 commentaires

0
votes

La plupart des solutions s'appuient sur mod_rewrite . Voir ici pour des exemples.


0 commentaires

0
votes

expansion sur @ Rodolphe's et @ Galen's's Réponses un peu.

Si vos besoins en réécriture d'URL sont limités, un .htaccess Code> avec des règles décrites dans l'exemple de Rodolphe fera bien. p>

Cependant, comme le suggère Galen, vos besoins peuvent être inconnus, ou vous voudrez peut-être leur étendre ultérieurement, sans que la nécessité de toucher vos règles de réécriture, une fois que vous les avez travaillé. P>

A Voiture courante de le faire, est de concevoir votre application autour d'un système d'URL qui est www.host.com/controller/action/paramètre code>. Un exemple d'une telle URL pourrait être www.host.com/book/view/1 code>, qui pourrait alors être traité interne à plusieurs égards. P>

1) p>

Vous avez des scripts séparés pour chaque contrôleur. Vous réécrivez ensuite chaque demande au formulaire $ contrôleur.php? Action = $ action et param = $ action param = $ param code>, redirection des demandes non correspondantes ou non valides à un contrôleur par défaut. P>

# Redirect all requests that isn't a file or 
# directory to your front controller
RewriteCond %{REQUEST_URI} !-f
RewriteCond %{REQUEST_URI} !-d
RewriteRule .* index.php [L]


0 commentaires

3
votes

J'ai créé un lien interne dans le format statique, comme, "http://www.example.com/casestudy/34" dans ma page Web.

Et j'ai écrit dans le fichier .htaccess Le code suivant: xxx


0 commentaires