Est-il possible d'utiliser .htaccess pour envoyer des URL à six chiffres à un script, mais gérer toutes les autres URL non valides en tant que 404?

StackOverflow https://stackoverflow.com/questions/73123

  •  09-06-2019
  •  | 
  •  

Question

Est-il possible d'utiliser .htaccess pour traiter les URL à six chiffres en les envoyant à un script, mais en traitant toutes les autres URL non valides comme une erreur 404?

Par exemple:

http://mywebsite.com/132483

serait envoyé à:

http://mywebsite.com/scriptname.php?no=132483

mais

http://mywebsite.com/132483a or
http://mywebsite.com/asdf

serait traité comme une erreur 404.

Je travaille actuellement via un script PHP 404 personnalisé, mais c’est plutôt compliqué. Il me semble que .htaccess pourrait être une solution plus élégante, mais je n’ai pas été en mesure de déterminer s’il est même possible.

Était-ce utile?

La solution

<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteRule ^([0-9]{6})$ scriptname.php?no=$1 [L]
</IfModule>

Pour conserver l'URL propre

http://mywebsite.com/132483

en servant scriptname.php, utilisez uniquement [L]. Utiliser [R = 301] vous redirigera vers votre nom de script.php? No = xxx

Vous pouvez trouver cela utile http: //www.addedbytes .com / download / mod_rewrite-cheat-sheet-v2 / pdf /

Autres conseils

Dans votre fichier htaccess, mettez ce qui suit

RewriteEngine On
RewriteRule ^([0-9]{6})$ /scriptname.php?no=$1 [L]

La première ligne active le moteur mod_rewrite. Les crochets () placent le contenu dans $ 1 - successive () renseignerait $ 2, $ 3 ... et ainsi de suite. Le [0-9] {6} dit rechercher une chaîne contenant exactement 6 caractères contenant uniquement les caractères 0 à 9.

Le [L] à la fin en fait la dernière règle. Si elle s’applique, le traitement de la règle s’arrête.

Oh, les ^ et $ marquent le début et la fin de l'URI entrant.

J'espère que ça aide!

Oui, c'est possible avec mod_rewrite. Il y a des tonnes de bons tutoriels en ligne sur mod_rewrite. Une recherche rapide sur Google devrait vous donner une réponse en un rien de temps.

En gros, vous allez vouloir vous assurer que l'expression régulière que vous utilisez ne recherche que des chiffres et aucun autre caractère, et vous assurer que sa longueur est de 6. Ensuite, vous redirigerez vers nom_script .?no= avec le nombre que vous avez capturé.

J'espère que ça aide!

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