1 votes

SEO Friendly URL to Dynamic URL using PHP

Actuellement j'ai une URL comme celle-ci

http://.website.com/index.php?function_name&cat=32

Je veux mettre les choses en place pour que nos marketeurs puissent publier des URL comme

http://.website.com//   

Le "cat=XX" sera généré à partir de la dernière balise . Mais les marketeurs veulent utiliser la catégorie parent dans leurs campagnes. Actuellement, nous faisons passer toutes les URL par index.php dans le répertoire racine HTML (ceci sera important plus tard).

J'ai essayé plusieurs solutions, y compris :

  1. mod_rewrite - le problème avec cette approche est que cela devient un énorme fichier .htaccess car nous devons écrire une règle pour chaque catégorie.

  2. RewriteMap - cela s'est approché car je pouvais interroger la base de données pour construire un fichier de mappage pour la sortie. Cependant, j'ai depuis appris que nous n'avons pas accès à httpd.conf.

  3. index.php - J'ai essayé de faire passer tout par notre fichier index.php ce qui fonctionne, mais ne garde pas l'URL conviviale dans le navigateur à des fins de référencement.

J'espère que quelqu'un a une autre idée qui pourrait aider, j'apprécierais vraiment. Si vous avez une référence à quelque chose sur le web qui pourrait aider, ce serait génial aussi.

5voto

Pourquoi ne pas rediriger toutes les requêtes vers index.php avec mod_rewrite et utiliser PHP pour écrire la logique de routage, ce qui semble être une manière beaucoup plus fiable que d'écrire des règles de réécriture distinctes?

Aussi simple que ce fichier .htaccess

RewriteEngine on
RewriteBase /
RewriteCond  %{REQUEST_FILENAME} !-f
RewriteCond  %{REQUEST_FILENAME} !-d
RewriteRule  ^(.*)$ index.php?request=$1 [QSA,L]

Et quelques lignes de code PHP dans index.php

$client_name = strtok($_SERVER['HTTP_HOST'],".");
list ($cat,$subcat) = explode("/",trim($_GET['request'],"/"));

1voto

Dan Heberden Points 6697

En plus de la réponse du Col. Shrapnel, au moins réduisez la sélection :

RewriteRule ^/([-a-zA-Z0-9_]+)/([0-9]+)$ index.php?function_name=$1&cat=$2 [L,QSA]  # domain.com/cat_name/23 est envoyé au serveur comme domain.com/index.php?function_name=cat_name&cat=23

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X