небесконечный чпу RewriteRule (возможно элементарный вопрос)

W2
На сайте с 12.03.2014
Offline
0
640

Здравствуйте, мое гугление сегодня похоже дало сбой:

вот смотрите: есть некоторый url

site.dom/lol/ff@ff

я хочу чтобы в site.dom/lol/index.php передался параметр ff@ff

делаю редирект, с ним все хорошо

RewriteRule (.*@.*)  site.dom/lol/index.php?ttt=%{REQUEST_URI}

но как мне сделать чтобы пользователь увидел в адресной строке снова site.dom/lol/ff@ff а не site.dom/lol/index.php?ttt=ff@ff ?

моя главная цель: воспользоваться в php значением "ff@ff" без изменения конечного вида запроса

D
На сайте с 14.01.2007
Offline
153
#1
webmasterx2:
делаю редирект, с ним все хорошо

вы уверены, что вы это попробовали? потому что эта строчка работает так как вы хотите. юзверь видит один урл, а скрипт получает другой.

если вы после этой строки [R] поставите, тогда будет browser redirect

W2
На сайте с 12.03.2014
Offline
0
#2
Dinozavr:
вы уверены, что вы это попробовали? потому что эта строчка работает так как вы хотите. юзверь видит один урл, а скрипт получает другой.
если вы после этой строки [R] поставите, тогда будет browser redirect

да. адрес меняется (может быть потому что ff@ff это папка) и в phpinfo() тоже можно увидеть мой запрос

siv1987
На сайте с 02.04.2009
Offline
427
#3

RewriteRule @ /lol/index.php?ttt=%{REQUEST_URI} [L]

http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewriterule

Manual:

Absolute URL

If an absolute URL is specified, mod_rewrite checks to see whether the hostname matches the current host. If it does, the scheme and hostname are stripped out and the resulting path is treated as a URL-path. Otherwise, an external redirect is performed for the given URL. To force an external redirect back to the current host, see the [R] flag below.
W2
На сайте с 12.03.2014
Offline
0
#4
siv1987:
RewriteRule @ /lol/index.php?ttt=%{REQUEST_URI} [L]

http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewriterule

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

siv1987
На сайте с 02.04.2009
Offline
427
#5

Вам выше написали как должен выглядеть реврайт для вашего случая, если не понятен текст по ссылки.

Объяснить поподробнее не смогу, боюсь подробнее чем там написано все равно не получатся. Юзайте гугл транслейт, или читайте русские статьи на тему мод реврайта если нужны подробности. А текст из документации был процитирован на случай если вы все таки знакомы с переводчиком. Если нет, просто воспользуйтесь готовым решением.

W2
На сайте с 12.03.2014
Offline
0
#6
siv1987:
Вам выше написали как должен выглядеть реврайт для вашего случая, если не понятен текст по ссылки.

он не возвращает меня на /lol/ff@ff а перенаправляет на /lol/index.php?ttt=%{REQUEST_URI}

а вот если набирать /lol/ff@ff/ то все ок. Спасибо!

p.s. для случая без слеша на конце происходит сначала редирект на файл со слешем на конце

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*[^/])$ /lol/$1/ [L,R=301]
RewriteRule @ /lol/index.php?ttvtp=%{REQUEST_URI} [L]
siv1987
На сайте с 02.04.2009
Offline
427
#7
webmasterx2:
он не возвращает меня на /lol/ff@ff а перенаправляет на /lol/index.php?ttt=%{REQUEST_URI}

Вас не должно вообще никуда перенаправлять.

webmasterx2:
а вот если набирать /lol/ff@ff/ то все ок. Спасибо!

Это что-то из ваших правил, реврайт никакое отношение к слэшем не имеет.

Joker-jar
На сайте с 26.08.2010
Offline
171
#8

Возможно, в процессе прошлых экспериментов браузер "закешировал" редирект и теперь перенаправляет вас без запроса к серверу. Попробуйте другой браузер, почистить историю, добавить что-то рандомное в запрос или использовать Ctrl+Enter (не везде работает).

W2
На сайте с 12.03.2014
Offline
0
#9
Joker-jar:
Возможно, в процессе прошлых экспериментов браузер "закешировал" редирект и теперь перенаправляет вас без запроса к серверу. Попробуйте другой браузер, почистить историю, добавить что-то рандомное в запрос или использовать Ctrl+Enter (не везде работает).

по воду того что закешировал редирект - это так, и при изменниях в htaccess ничего не менялось.

но я проверил свои слова в приватном режиме - все именно так, как я описал.

---------- Добавлено 12.03.2014 в 19:16 ----------

Joker-jar:
Возможно, в процессе прошлых экспериментов браузер "закешировал" редирект и теперь перенаправляет вас без запроса к серверу. Попробуйте другой браузер, почистить историю, добавить что-то рандомное в запрос или использовать Ctrl+Enter (не везде работает).

напишу еще раз свой ответ ( мне кажется он непонятным):

браузер действительно кеширует редирект, и, независимо от того что изменилось в htaccess бразуер перенаправлял меня туда, куда не надо.

но я проверил в режиме приватного просмотра ссылки со слешем и без.

без слеша меня перенаправляет на /lol/index.php?ttt=%{REQUEST_URI} а с ним, я остаюсь на месте, при этом в переменную ttt записывается %{REQUEST_URI}

siv1987
На сайте с 02.04.2009
Offline
427
#10
webmasterx2:
без слеша меня перенаправляет на /lol/index.php?ttt=%{REQUEST_URI} а с ним, я остаюсь на месте

Без слеша вас должно перенаправлять сюда /lol/%path%/

Если перенаправляет куда-то еще, значит капайте другие правила.

webmasterx2:
но я проверил в режиме приватного просмотра ссылки со слешем и без.

Лично я не могу поручится за режим приватного просмотра, так что советую проверять на уникальные ссылки которые вы браузере еще не открывали.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий