4 votes

htaccess redirige tout vers un seul fichier (sauf depuis localhost)

Je veux rediriger tout le trafic vers un seul fichier de passerelle .php, ce fichier se chargera de l'authentification et utilisera Ajax pour extraire le fichier demandé.

J'ai donc besoin d'un .htaccess avec un flux comme celui-ci :

if external request for any file
redirect (or rewrite) to /gateway.php

gateway.php doit alors pouvoir accéder à ce fichier.

C'est le mieux que j'ai pu trouver :

RewriteEngine On
RewriteBase /
RewriteCond %{REMOTE_HOST} !^127\.0\.0\.1
RewriteCond %{REQUEST_URI} !/gateway\.php$  
RewriteRule .* http://www.website.com/gateway.php?req=%{REQUEST_URI} [R=302,L]

Cela fonctionne, mais lorsque l'ajax sur gateway.php essaie d'obtenir le contenu d'une autre page, il obtient le contenu de gateway.php (à cause de la redirection). Je dois ajouter une exception d'une manière ou d'une autre !

Toute aide serait grandement appréciée !

3voto

Vous n'avez pas besoin de cette RewriteBase là-dedans, essayez ceci :

RewriteEngine on
RewriteRule ^/gateway\.php$ - [L]
RewriteCond %{REMOTE_HOST} ^127\.0\.0\.1
RewriteRule ^(.*)$ - [L]
RewriteRule ^(.*)$ http://www.website.com/gateway.php?req=%{REQUEST_URI} [R=302,L]

D'abord, vous dites explicitement que si gateway.php est demandé, il faut arrêter. Ensuite, vous dites que si c'est à partir de l'hôte local, il suffit d'utiliser l'URL, sinon il faut faire la redirection. Il se peut que vous soyez soumis à une sorte de mécanisme de redirection interne, vous devrez peut-être configurer RewriteLog et RewriteLogLevel rapidement pour déboguer les actions qu'Apache entreprend.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X