J'ai besoin de réécrire un certain nombre d'urls (une centaine environ) à des fins de référencement, et il se peut que d'autres soient ajoutées à l'avenir (probablement 50-100 autres plus tard). J'ai besoin d'un moyen flexible de le faire et jusqu'à présent, le seul moyen auquel je pense est de modifier le fichier .htaccess en utilisant le moteur de réécriture.
Par exemple, j'ai un tas d'urls comme celui-ci (veuillez noter que la chaîne de requête n'est pas pertinente et est dynamique ; elle peut être n'importe quoi. Je ne les utilisais qu'à titre d'exemple. Je me concentre uniquement sur le nom de chemin - la partie entre le nom d'hôte et la chaîne de requête, comme indiqué en gras ci-dessous) :
http://example.com/ seo_term1 ?utm_source=google&utm_medium=cpc&utm_campaign=seo_term http://example.com/ un autre_seo_term2 ?utm_source=facebook&utm_medium=cpc&utm_campaign=seo_term
http://example.com/ encore_un_autre_seo_term3 ?utm_source=exemple_ad_network&utm_medium=cpc&utm_campaign=seo_term http://example.com/ foobar_seo_term4
http://example.com/ blah_seo_term5 ?test=1
etc...
Et ils sont tous en train d'être réécrits pour (pour l'instant) : http://example.com/
Quelle est la manière la plus efficace de procéder pour que je puisse ajouter d'autres termes à l'avenir ?
Une solution que j'ai trouvée consiste à faire ceci (dans le fichier .htaccess) :
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ / [NC,QSA]
Cependant, le problème avec cette solution est que même les urls invalides (telles que http://example.com/blah
) sera réécrit en http://example.com
au lieu de donner un code 404 (ce qu'il est censé faire de toute façon). J'essaie toujours de comprendre comment tout cela fonctionne, et la seule façon à laquelle je peux penser est d'écrire 100 pages de plus. RewriteCond
(par exemple : RewriteCond %{REQUEST_URI} =/seo_term1 [NC,OR]
) avant le RewriteRule
directive. Par exemple :
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} =/seo_term1 [NC,OR]
RewriteCond %{REQUEST_URI} =/another_seo_term2 [NC,OR]
RewriteCond %{REQUEST_URI} =/yet_another_seo_term3 [NC,OR]
RewriteCond %{REQUEST_URI} =/foobar_seo_term4 [NC,OR]
RewriteCond %{REQUEST_URI} =/blah_seo_term5 [NC]
RewriteRule ^(.*)$ / [NC,QSA]
Mais ça ne me semble pas très efficace. Existe-t-il un meilleur moyen ?