web-dev-qa-db-fra.com

Réécrire l'URL avec plusieurs requêtes

Cet article explique comment diriger le trafic entrant provenant d'URL "factices" de ce type:

http://www.example.com/seo-sample/article-install-Apache-on-linux.php

vers un fichier PHP qui "utilise" réellement les URL de ce type:

http://www.example.com/seo-sample/article_show_friendly.php?url=install-Apache-on-linux

Voici l'exemple de code utilisé dans le fichier htaccess:

RewriteEngine on
RewriteRule ^article-(.*).php$ ./article_show_friendly.php?url=$1

Cependant, mes pages contiennent plusieurs requêtes dans leurs URL. Comment puis-je faire ce travail pour eux?

http://example.com/keyboard/keyboard-chart.php?gam=141&sty=16&lay=1&tit=sid-meiers-alpha-centauri-smac-1

(Je souhaite utiliser le paramètre tit comme partie principale de l'URL.)

1
posfan12
http://example.com/keyboard/keyboard-chart.php?gam=141&sty=16&lay=1&tit=sid-meiers-alpha-centauri-smac-1

Je souhaite utiliser le paramètre "tit" comme partie principale de l'URL.

Si vous voulez littéralement n'utiliser que ce paramètre, et que vous ne besoin pour transmettre les autres paramètres de l'URL (c.-à-d. Qu'ils peuvent être déduits de ce paramètre), c'est exactement la même chose comme votre premier exemple. Vous auriez une "jolie" (fausse) URL de la forme:

http://example.com/keyboard/sid-meiers-alpha-centauri-smac-1

(Pas besoin de l'extension .php sur l'URL, à moins que vous ne le vouliez explicitement?) Ce qui est ensuite réécrit en interne avec quelque chose comme ce qui suit dans le fichier /keyboard/.htaccess:

RewriteRule ^([\w-]+)$ keyboard-chart.php?gam=141&sty=16&lay=1&tit=$1 [L]

Dans l'exemple ci-dessus, les paramètres gam, sty et lay sont codés en dur dans le RewriteRulesubstitution. Cela suppose que, étant donné le paramètre tit de sid-meiers-alpha-centauri-smac-1, vous savez quelles sont les valeurs de ces autres paramètres.

Toutefois, si ce n'est pas le cas et que ces autres paramètres peuvent également varier, ils doivent également être passés dans la "jolie" URL, car ils ne peuvent pas être déduits du paramètre unique tit. Ceci peut être réalisé en utilisant le même principe que ci-dessus: définissez un groupe de capture (c.-à-d. Un sous-motif entre parenthèses) dans la RewriteRulemotif (regex) pour chaque paramètre et utilisez une référence correspondante ($1..$9) dans le substitution. Par exemple, étant donné une URL du formulaire:

http://example.com/keyboard/141/16/1/sid-meiers-alpha-centauri-smac-1

Ceci peut ensuite être réécrit en interne avec quelque chose comme ce qui suit dans le fichier /keyboard/.htaccess:

RewriteRule ^(\d+)/(\d+)/(\d)/([\w-]+)$ keyboard-chart.php?gam=$1&sty=$2&lay=$3&tit=$4 [L]

venant d'URL "faux"

Je sais ce que vous voulez dire, mais ils ne sont pas vraiment faux. Ce sont les "jolies" URL, ou simplement "les URL". C'est juste qu'ils ne mappent pas directement à une ressource du système de fichiers, sans une réécriture d'URL. (Par "faux", j'ai tout de suite pensé que vous faisiez référence à des URL inexistantes!)

URL conviviales pour le référencement

L'article vers lequel vous créez un lien fait référence à plusieurs reprises à des "URL conviviales pour le référencement". Pour être clair, ce ne sont pas strictement SEO-friendly. Les moteurs de recherche ne s'en soucient pas vraiment. Les "jolies" URL de ce type profitent principalement aux utilisateurs, pas aux moteurs de recherche, et peuvent aider à réduire les taux de clics, mais elles ne facilitent pas directement le classement.

1
MrWhite