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?
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.
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!