Puis-je ré-écrire mes URL comme ceci et est-ce une bonne idée?

Est-il possible de réécrire (Apache Mod-Rewrite) une URL à partir de ceci:

http://www.example.com/view.php?t=h5k6 pour cela http://www.example.com/h5k6

La raison de cette réécriture est que l’URL doit être très courte (un peu comme un minuscule service d’URL).

Est-ce que cette nouvelle URL va toujours sur ma page view.php? Serait-il encore capable d’utiliser le tableau super global GET ( $_GET ) pour accéder à la variable t ? Je souhaite toujours que ma page index.php corresponde à cette http://www.example.com .

J’apprécierais également des commentaires sur les effets que cela peut avoir, car je suis un peu fou. 🙂

Merci a tous

La terminologie de mod-rewrite fonctionne dans l’autre sens. Les requêtes arriveraient comme ceci http://www.example.com/h5k6 et seraient réécrites en http://www.example.com/view.php?t=h5k6 interne. De cette façon, vos scripts PHP peuvent répondre aux requêtes comme s’ils étaient envoyés en tant que parameters GET, mais les utilisateurs voient les URL de manière beaucoup plus conviviale.

Vous n’avez donc pas besoin de modifier les scripts PHP et vous pouvez toujours accéder au paramètre t du tableau GET.

Dans votre cas, la règle ressemblerait à ceci:

 RewriteRule ^/(.*) /view.php?t=$1 

Vous voudrez peut-être être plus précis sur ce que vous acceptez (au lieu de simplement l’expression catch-all .* ). De plus, vous pourriez vouloir des exceptions à cette règle si vous avez d’autres pages dans ce répertoire autres que view.php.

Essayez l’un de ces:

 # /view.php?t=h5k6 externally to /h5k6 RewriteCond %{THE_REQUEST} ^GET\ /view\.php RewriteCond %{QUERY_STRING} ^([^&]*&)*t=([^&]+)&?.*$ RewriteRule ^/view\.php$ /%2 [L,R=301] # /h5k6 internally to /view.php?t=h5k6 RewriteRule ^/([0-9a-z]+)$ view.php?t=$1 [L] 

Oui, cela est certainement possible et aura exactement l’effet que vous décrivez. Cependant, votre terminologie est inversée. L’URL “courte” est celle que le navigateur d’origine envoie au serveur, et elle est réécrite dans la version la plus longue qui est alors réellement traitée et génère une requête PHP.

La seule difficulté réside dans le fait qu’en cas d’utilisation imprudente, les moteurs de recherche pourraient indexer les deux URL et les considérer comme du contenu en double, ce qui est mauvais pour votre classement. D’une part, cela peut (et devrait) être évité en ne publiant jamais la version “longue” n’importe où (c’est-à-dire que tous les liens internes au site ont le format “court”). Cependant, puisque vous pouvez les publier accidentellement (ce qui peut arriver facilement), vous devez également utiliser link rel = “canonical” pour indiquer aux moteurs de recherche l’URL sous laquelle vous souhaitez indexer vos pages.