404 htaccess QUERY_STRING

troff

Новичок
404 htaccess QUERY_STRING

Привет всем!
Пришел посетитель по корявой ссылке: site.ru/&p=2&s=5
сервер выдает ошибку 404 и шлет его на index.php

в htaccess:
ErrorDocument 404 /index.php

Что нужно дописать в htaccess, чтобы не потерять "&p=2&s=5"?
 

troff

Новичок
Спасибо за быстрый ответ.
Есть! прошу прощения - $_SERVER не теряется.
Но QUERY_STRING-a нет.

Содержимое htaccess:
ErrorDocument 404 /i/index.php

Содержимое index.php:
echo "_SERVER['QUERY_STRING']<pre>";
echo print_r($_SERVER);
echo "</pre><hr>";
echo "<br>+".$_GET['p']."+<br>";

Обращаемся по ссылке: http://ss/i/&p=9

Т.е. если в бы можно было в htaccess
сделать что-то вроде:
ErrorDocument 404 /i/index.php?<? substr(strrchr($_SERVER['REQUEST_URI'], "/"), 1);?>
//надо лишь добавить знак вопроса
 

Фанат

oncle terrible
Команда форума
print_r($_SERVER);
и что, ты не в состоянии увидеть здесь свою &p=9?
 

troff

Новичок
Автор оригинала: Фанат
print_r($_SERVER);
и что, ты не в состоянии увидеть здесь свою &p=9?
в состоянии...
Но вопрос в том, можно ли эту мою "&p=9" указать в htaccess.
если нет, то тогда буду делать редирект на dopisyvalka_znakov_voprosov.php, который:
-получит $_SERVER['REQUEST_URI']
-убьет путь и имя файла
-впереди допишет знак вопроса,
и перешлет опять на index.php

Но что-то мне кажется это не очень изящное решение.
Ведь можно же сделать красивее, а?

-~{}~ 08.04.06 17:00:

Ничего красивее вот этого (в index.php) у меня не придумалось..

if(strstr($_SERVER['REQUEST_URI'], "/&")) {
$aa=substr(strrchr($_SERVER['REQUEST_URI'], "/"), 1);
header ("Location: index.php?".$aa);
}
 

Фанат

oncle terrible
Команда форума
что-то я тебя не понял.
ты писал, что не хочешь потерять.
выяснилось, что ты ничего и не теряешь.
но после этого почему-то тебе вдруг приспичило совершать какие-то магические пассы с редиректами.

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

ты просто хочешь автоматом заменять & на ?
 

troff

Новичок
автоматом добавлять ?

Пришел человек по кривой ссылке, в которой нет "?", а сразу после / стоит &. Сервер этого не понимает и делает редирект на скрипт, который прописан в htaccess как 404.
Из-за того, что нет знака ?, то квери_стринга НЕТ. А Реквест_УРИ - есть.
Вот и возник вопрос, можно ли в htaccess вставить пхп-код, который допишет к ErrorDocument 404 Квери_стринг, который вырежется из Реквест_УРИ.
Вот!
А возникло это вот откуда: пришел чел по партнерской ссылке, а его не записало. Стал смотреть - оказывается, если нет знака вопроса, а сразу после слеша стоит амперсанд, то сервер понимает это как ошибку и в $_GET ничего нет.
 

Andreika

"PHP for nubies" reader
troff
ну допустим можно в htaccess вставить пхп код :))) который допишет к ErrorDocument 404 Квери_стринг... а дальше чего ды будешь делать с этим квери_стринг в еррордокумент ? :)

мож партнеру руки выправить?
 

Фанат

oncle terrible
Команда форума
я не пойму никак
почему ты с маниакальным упорством хочешь переписывать свой квери стринг именно в хтаксессе и почему тебя не устраивает делать это в индекс пхп.
в чём разница?

-~{}~ 08.04.06 19:57:

troff
кстати, да
а если он ошибётся не в знаке вопроса, а в а или в б. что будешь делать?
 

troff

Новичок
В индекс.пхп я уже сделал (см пост 16:54)
И интерес у меня уже пропал к этому вопросу. из серии "если работает, то лучше не трогать"... Спасибо за напоминание про "маниакальное упорство" - есть такое : ))

Андрейка
так у меня еррор_документ стоит индекс.пхп, которому этот квери_стринг, во-как-нужен!

Так как, говоришь, в Хтасессе выполнить пхп-код?? ;))
 

Фанат

oncle terrible
Команда форума
В индекс.пхп я уже сделал (см пост 16:54)
ага, через опу автогеном
Спасибо за напоминание
спасибо - это слишком много благодарности.
достаточно был ответить на мой вопрос.
желательно - на первый.
я был бы очень признателен.
 

troff

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

ys

отодвинутый новичок
> А возникло это вот откуда: пришел чел по партнерской ссылке.....

А вас дожна волновать кривизна рук Вашего партнера?
 

Фанат

oncle terrible
Команда форума
почему в хтаксессе ты делал без редиректа, а в индексе - с редиректом?
 

troff

Новичок
не подумал.
а как в хтаксессе сделать с редиректом?
 

PAG

Новичок
Автор оригинала: Фанат
print_r($_SERVER);
и что, ты не в состоянии увидеть здесь свою &p=9?
У меня вот какая проблема:
в .htaccess стоит:
ErrorDocument 404 http://sitename.ru/404.php
На этой странице я хочу узнать, что же за страница не найдена, т.к. в логах везде указывается только 404.php
Я пытаюсь взять значение переменной $_SERVER['REQUEST_URI'], но она указывает на '/404.php'
Как тут быть?
 

SiMM

Новичок
Указывать путь в файловой системе, а не на вэб-сайте.
 

WP

^_^
PAG
1. Свою тему сделал бы.
2. Указывать локальный путь.
3. var_dump($_SERVER);
 
Сверху