Cómo hacer htaccess redirect basado en el valor de la cookie

He fallado en Google y no he podido encontrar la respuesta buscando aquí. Lo siento, soy nuevo en htaccess y tiene una syntax muy extraña y es muy difícil de aprender.

Puedes ver lo que estoy tratando de hacer aquí …

RewriteEngine on RewriteCond %{HTTP_COOKIE} ^.*user_id=(\d+).*$ [NC] RewriteRule .* http://localhost/mysite/cache/$1 [R=301,L] RewriteRule .* http://localhost/mysite/cache/guest [R=301,L] 

Estoy almacenando en caché las páginas de velocidad de carga de cada usuario. Deseo redirigirme a la carpeta de caché HTML adecuada si han iniciado sesión con una cookie; de ​​lo contrario, deseo cargar la caché de invitado.

Ahora mismo entra en un infi-loop. Si elimino [R = … entonces obtengo el error interno del servidor.

¡¡¡Por favor ayuda!!! ¡¡¡Gracias!!!

Esto funciona para una cookie como id=1234 :

 RewriteEngine on RewriteCond %{HTTP_COOKIE} ^id=([0-9]*)$ [NC] RewriteRule .* http://localhost/mysite/cache/%1 [R=301,L] RewriteRule .* http://localhost/mysite/cache/guest [R=301,L] 

Ahora, para su problema: ¡asegúrese de que su htaccess no se aplique a la página que reescribe! Por ejemplo, si su .htaccess se encuentra en /mysite/.htaccess

Se usará nuevamente en

 http://localhost/mysite/cache/%1 

Esa es quizás la razón de su ciclo infinito. Para resolver esto, asegúrese de que las reglas de htaccess no se apliquen a los subdirectorios o use otro directorio para la caché.

Aquí está la solución para cualquier otra persona que tenga este problema:

 RewriteEngine on RewriteRule ^.+$ - [L] RewriteCond %{HTTP_COOKIE} ^.*user_id=(\d+).*$ [NC] RewriteRule .* http://localhost/mysite/$1 [R=301,L] RewriteRule .* http://localhost/mysite/guest [R=301,L] 

Aunque todavía no he probado la parte de las cookies, ¡estoy seguro de que habrá muchos más problemas allí! ¡Pero el rest lo probé y funciona! (va a invitado y luego no entra en infi-loop, ¡sí!)

¡Que tengas un gran día! 8)