Realmente intenté todo, la herramienta probador htaccess dice que está bien, pero en realidad no funciona.
Quiero redirigir un subdominio al dominio principal solo si REQUEST_URI no comienza con 3 cadenas específicas.
Lo intenté sin éxito con:
RewriteCond %{HTTP_HOST} ^sub.example.com$ [NC]
RewriteCond %{REQUEST_URI} !(aaa|bbb|ccc)
RewriteCond %{REQUEST_URI} !^/?$
RewriteRule ^(.*)$ http://www.example.com%{REQUEST_URI} [R=301,NC,L,QSA]
Quiero eso:
http://sub.example.com
(no debe "redirigir) ->http://sub.example.com
El | Okayhttp://sub.example.com/aaa/sss
(no debe "redirigir) ->http://sub.example.com/aaa/sss
El | KO (redirigir a http: // www ...)http://sub.example.com/zzz/xxx
(debe redirigir) ->http://www.example.com/zzz/xxx
El | Okay
Gracias
Respuestas
2 para la respuesta № 1Prueba esta regla en su lugar:
RewriteCond %{HTTP_HOST} ^sub.example.com$ [NC]
RewriteCond %{THE_REQUEST} !s/+(aaa|bbb|ccc)/ [NC]
RewriteRule . http://www.example.com%{REQUEST_URI} [R=301,L,NE]
Pruébalo después de borrar la caché de tu navegador.
Utilizando THE_REQUEST
en lugar de REQUEST_URI
para asegurarnos de que usamos valores de URI sin cambios tal como los recibió Apache.