Question

J'ai posté une question similaire . Cependant, cela a été plus à obtenir des conseils sur ce qu'il faut faire. Maintenant que je sais ce qu'il faut faire, je suis à la recherche d'un peu d'aide sur la façon de le faire!

En fait, j'ai un site Web qui est à peu près dynamique 100%. Tous les liens de site sont générés en utilisant PHP et toutes les pages sont composées de php includes / code. Je suis en train d'améliorer le référencement du site en améliorant les URL (comme indiqué dans l'autre question) et je me bats un peu.

J'utilise mod_rewrite de réécrire les belles urls aux urls laid sur le serveur. Alors ce que je dois maintenant est de convertir les urls laids (qui sont générés à partir du code php dans les pages) aux plus agréables urls.

Voici les URL que je dois analyser (ce sont dans l'autre aswell question):

/index.php?m=ModuleType
/index.php?m=ModuleType&categoryID=id
/index.php?m=ModuleType&categoryID=id&productID=id
/index.php?page=PageType
/index.php?page=PageType&detail=yes

Voici ce que je veux que les URL ci-dessus pour être analysées à:

/ModuleType
/ModuleType/CategoryName
/ModuleType/CategoryName/ProductName
/PageType
/PageType/Detail

Il est un exemple de l'autre question posée par Gumbo mais je sentais qu'il était un peu désordonné et peu clair exactement ce qu'il faisait.

Quelqu'un pourrait-il me aider à résoudre ce problème?

Merci d'avance.

Était-ce utile?

La solution

Je crois que je vois ce que vous êtes après ... Vous avez fait toute la réécriture d'URL, mais tous les liens entre vos pages utilisez l'ancienne syntaxe URL.

La seule façon que je peux voir ce problème est de faire une sorte de recherche regex et remplacer les liens afin qu'ils utilisent la nouvelle syntaxe. Ce sera un peu plus compliqué si tous les liens sont générés dynamiquement, mais nous espérons qu'il n'y aura pas trop de ce faire.

Sans voir comment vos liens sont générés à l'heure actuelle, il est difficile de dire comment changer le code. J'imagine qu'il fonctionne quelque chose comme ça si:

<?php echo "<a href='/index.php?m=$ModuleType&categoryID=$id'>"; ?>

Vous souhaitez changer cela:

<?php echo "<a href='$ModuleType/$id'>"; ?>

Désolé si je l'ai fait des erreurs dans la syntaxe, juste à côté du haut de ma tête ...

Autres conseils

À moins d'avoir mal compris votre question, vous ne pas analyser les URL « laid », votre script PHP est appelé avec eux, de sorte que vous $_GET[] vos paramètres (m, CategoryId, ProductID) et vous les combiner pour faire vos belles URL, qui ne devrait pas être trop dur (juste un peu de logique pour voir si un paramètre est là et concaténer les chaînes).

Vous aurez besoin d'un contrôleur frontal, qui envoyer l'URL à la bonne page.

  1. Apache va réécrire l'URL en utilisant les règles de .htaccess, de sorte que rien écrit sera redirigé vers index.php? Q =. Par exemple, en tapant http://example.com/i/am/here entraînera un appel à index.php? q = / i / am / ici
  2. index.php va analyser le chemin de $ _GET [ « q »] et décider ce qu'il faut faire. Par exemple, il peut inclure une page, ou aller à la base de données, regardez le chemin jusqu'à, obtenir le contenu approprié et l'imprimer

Si vous voulez un exemple de travail d'un .htaccess qui fera exactement cela (rediriger vers index.php avec q = chemin?) Jeter un oeil à la façon dont il fait drupal:

http://cvs.drupal.org/ viewvc.py/drupal/drupal/.htaccess?revision=1.104

Palantir a écrit ceci est fait en utilisant mod_rewrite et .htaccess. Pour obtenir les conditions de ré-écriture correcte dans votre .htaccess vous pouvez jeter un oeil à un Mod Rewrite générateur (par exemple http://www.generateit.net/mod-rewrite/ ). Il est beaucoup plus facile.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top