.htaccess перенаправления без изменения адресной строки

Я пытаюсь написать .htaccess правила для перенаправления скрипт, который далее перенаправляет куда-то еще. Вроде того, как работают сокращатели URL. Однако Я ... --5-->не хотите, чтобы адресная строка изменилась во время .htaccess часть редирект. (Это нормально для перенаправления сценария, чтобы изменить местоположение.)

Я использую mod_rewrite, В настоящее время делаю это:

RewriteEngine On

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

есть ли флаг или другой метод, который я могу использовать для достижения того, что я пытаюсь делать?

дополнения: панель местоположения не меняется в Firefox, поскольку происходят перенаправления, что я и хочу сделать. Он просто меняется один раз, чтобы отразить конечную точку. Safari изменяет его на каждом шагу. Как этого избежать?

1 ответов


если вы используете R флаг вы говорите mod_rewrite что внешнее перенаправление-это то, что вы хотите, поэтому браузеру предлагается сделать новый запрос, и адресная строка должна измениться соответствующим образом.

без R флаг, нет перенаправления, но перезапись внутреннего запроса Apache, которая скрыта от браузера. Таким образом, адресная строка не меняется. Однако по понятным причинам внутренние перенаправления на внешние URI использовать нельзя.

так как вы кажется, использовать внутреннее перенаправление в любом случае, просто удалите R флаг и он должен работать:

RewriteEngine On
RewriteBase /

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