.htaccess redirect without changing address bar
.htaccess, http-status-code-301, redirect
Solution
If you are using the `R` flag you are telling `mod_rewrite` that an external redirect is what you want, therefore the browser is asked to make a new request and the address bar should change accordingly.
Without the `R` flag, there is no redirect, but an Apache-internal request rewrite which is hidden from the browser. Thus, the address bar won't change. However, you cannot use internal redirects to external URIs for obvious reasons.
Since you seem to use an internal redirect anyway, just remove the `R` flag and it should work:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.+)$ ?url=$1 [L]
Problem
I'm trying to write an `.htaccess` rule to redirect to a script, which further redirects somewhere else. Kind of like how URL shorteners work. However, I don't want the address bar to change during the `.htaccess` part of the redirect. (It's okay for the script redirect to change the location.) I'm using `mod_rewrite`, currently doing this: ``` RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteBase / RewriteRule (.+)$ "?url=$1" [L,R=301] ``` Is there a flag or another method I can use to achieve what I'm trying to do? Addenda: The location bar doesn't change in Firefox as the redirects are happening, which is what I want to do. It just changes once to reflect the end point. Safari changes it at every step. Any way to avoid that?