Entonces, actualmente estoy creando una API REST en PHP.
Logré que las babosas funcionaran en su mayor parte. Si solicito /api/admin/v1/users/1 , devolverá el usuario que necesito. Sin embargo, también necesito poder agregarle, por ejemplo, /api/admin/v1/users/1/keys .
El archivo HTACCESS que administra el slug está en la carpeta misma ( /users/ ).
RewriteEngine On RewriteRule ^(.*)$ user.php?slug=$1 [L]Intenté agregar otra línea, pero creo que me equivoqué (no soy tan avanzado con HTACCESS)
RewriteRule ^(.*)/keys$ keys.php?slug=$1 [L]Esto no hizo nada, todavía devuelve el objeto de usuario.
RewriteRule ^(.*)$ user.php?slug=$1 [L] RewriteRule ^(.*)/keys$ keys.php?slug=$1 [L]
La primera regla coincide con todo , por lo que la segunda regla nunca se procesa. Pero dado que la primera regla coincide con todo , también se reescribirá (a user.php?slug=user.php ) en la segunda pasada por el motor de reescritura.
Puede resolver estos problemas haciendo que la expresión regular sea más restrictiva. Desde su URL de ejemplo, parece que el slug es numérico , en cuyo caso puede restringir la expresión regular para que coincida solo con dígitos (0-9).
Por ejemplo:
RewriteRule ^(\d*)$ user.php?slug=$1 [L] RewriteRule ^(\d+)/keys$ keys.php?slug=$1 [L]Tenga en cuenta que la primera regla también coincide con una ruta de URL vacía, es decir. ninguna babosa en absoluto (al igual que su regla original). La segunda regla no permite un slug vacío (de todos modos, nunca coincidiría).
La segunda regla no funciona porque el indicador L permanece para: último - detener el procesamiento de reglas
Entonces necesitas editar para:
RewriteEngine On RewriteRule ^(.*)$ user.php?slug=$1 [QSA, L] RewriteRule ^(.*)/keys$ keys.php?slug=$1 [QSA, L]