¿Es posible utilizar .htaccess para enviar URL con números de seis dígitos a un script pero manejar todas las demás URL no válidas como 404?
Pregunta
¿Es posible utilizar .htaccess para procesar las URL de seis dígitos enviándolas a un script, pero manejar todas las demás URL no válidas como un error 404?
Por ejemplo:
http://mywebsite.com/132483
sería enviado a:
http://mywebsite.com/scriptname.php?no=132483
pero
http://mywebsite.com/132483a or
http://mywebsite.com/asdf
se manejaría como un error 404.
Actualmente tengo esto funcionando a través de un script PHP 404 personalizado, pero es un poco complicado.Me parece que .htaccess podría ser una solución más elegante, pero no he podido determinar si es posible.
Solución
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^([0-9]{6})$ scriptname.php?no=$1 [L]
</IfModule>
Para conservar la URL limpia
http://mywebsite.com/132483
mientras sirve scriptname.php use solo [L].Usar [R=301] te redirigirá a tu scriptname.php?no=xxx
Puede que esto le resulte útil http://www.addedbytes.com/download/mod_rewrite-cheat-sheet-v2/pdf/
Otros consejos
En su archivo htaccess, coloque lo siguiente
RewriteEngine On
RewriteRule ^([0-9]{6})$ /scriptname.php?no=$1 [L]
La primera línea enciende el motor mod_rewrite.Los corchetes () colocan el contenido en $1; los () sucesivos llenarían $2, $3...etcétera.El [0-9]{6} dice buscar una cadena de exactamente 6 caracteres que contenga solo los caracteres del 0 al 9.
La [L] al final hace que esta sea la última regla; si se aplica, el procesamiento de la regla se detendrá.
Oh, ^ y $ marcan el inicio y el final del uri entrante.
¡Espero que ayude!
Sí, es posible con mod_rewrite.Hay toneladas de buenos tutoriales de mod_rewrite en línea. Una búsqueda rápida en Google debería arrojar la respuesta en poco tiempo.
Básicamente, lo que querrá hacer es asegurarse de que la expresión regular que utilice solo busque dígitos y ningún otro carácter y asegurarse de que la longitud sea 6.Luego redirigirá a scriptname.?no= con el número que capturó.
¡Espero que esto ayude!