21 votes

.htaccess rediriger sans changer la barre d'adresse

J'essaie d'écrire un .htaccess pour rediriger vers un script, qui redirige ensuite ailleurs. Un peu comme le fonctionnement des raccourcisseurs d'URL. Cependant, je Ne le fais pas. vous voulez que la barre d'adresse change pendant la .htaccess partie de la redirection. (Il est normal que la redirection script change l'emplacement).

J'utilise mod_rewrite Je suis en train de le faire :

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteBase /
RewriteRule (.+)$ "?url=$1" [L,R=301]

Existe-t-il un drapeau ou une autre méthode que je peux utiliser pour réaliser ce que j'essaie de faire ?

Addenda : La barre d'emplacement ne change pas dans Firefox pendant que les redirections se produisent, ce qui est ce que je veux faire. Elle change juste une fois pour refléter le point final. Safari le modifie à chaque étape . Y a-t-il un moyen d'éviter cela ?

43voto

Ferdinand Beyer Points 27723

Si vous utilisez le R drapeau que vous dites mod_rewrite qu'une redirection externe est ce que vous voulez, le navigateur est donc invité à faire une nouvelle demande et la barre d'adresse doit changer en conséquence.

Sans le R il n'y a pas de redirection, mais une réécriture de la demande interne à Apache qui est cachée au navigateur. Ainsi, la barre d'adresse ne changera pas. Cependant, vous ne pouvez pas utiliser de redirections internes vers des URI externes pour des raisons évidentes.

Puisque vous semblez utiliser une redirection interne de toute façon, supprimez simplement l'option R et cela devrait fonctionner :

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.+)$ ?url=$1 [L]

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X