Digamos que tengo /secret/example.php
En mi archivo .htaccess, quiero volver a escribir solicitudes a /secret a /home.html usando
RewriteRule secret /home.html Pero ahora, cuando intento acceder a /secret/example.php usando ajax desde example.js
var xhr = new XMLHttpRequest(); xhr.open('GET', '/secret/example.php', true); xhr.onload = function(){ console.log(xhr.responseText); } xhr.send();También se redirige y no funciona.
¿Hay alguna manera de que solo pueda reescribir las solicitudes realizadas por el usuario (escribiendo www.example.com/secret en la barra de búsqueda) y aún permitir que ajax acceda al archivo?
Es posible si configura un encabezado adicional en la solicitud xhr: xhr.setRequestHeader("VIAXHR", "true");
Luego en .htaccess algo como esto:
RewriteCond %{HTTP:VIAXHR} !^true$ RewriteRule secret /home.htmlUsar RewriteCond antes de RewriteRule
Algo como esto:
RewriteCond %{REQUEST_URI} !^/secret/example.php$ RewriteRule secret /home.html