урл с якорем # - ответ сервера 404, почему?

P
На сайте с 06.01.2009
Offline
592
898

Ребят, подскажите, пожалуйста.

Ничего не понимаю.


$tekurl = substr ($_SERVER['REQUEST_URI'],1); // получим урл и удалим первый слеш
//if (substr_count($tekurl, "#")>0) {echo $tekurl;}
далее подключаемся к бд и проверяем существование страницы

Все гут, все работает.

Если урл в адр строку вставить с якорем - то ответ сервера 404.

Стоит добавить строку которая в коде // то ответ сервера 200 ОК.

Причем в страницу $tekurl не выводится.

Ничего не понимаю, как такое может быть? Спасибо

VHS-1980
На сайте с 21.05.2010
Offline
91
#1

а если напечатать в браузер $_SERVER['REQUEST_URI'] - увидешь #?

почитай об fragment identifier

P
На сайте с 06.01.2009
Offline
592
#2
VHS-1980:
а если напечатать в браузер $_SERVER['REQUEST_URI'] - увидешь #?

почитай об fragment identifier

Спасибо. Всё на английском ((

Можете просто коротко пояснить, что за процесс происходит? в 2-х словах если не сложно

сделал так


$tekurl = substr ($_SERVER['REQUEST_URI'],1); // получим урл и удалим первый слеш
$qwert=explode("#", $tekurl);
$tekurl=$qwert[0];
unset($qwert);
bukachuk
На сайте с 07.09.2008
Offline
97
#3

Якорь существует только в браузере пользователя и на сервер он не передается

Программирование PHP,Mysql (/ru/forum/934470)
P
На сайте с 06.01.2009
Offline
592
#4
bukachuk:
Якорь существует только в браузере пользователя и на сервер он не передается

Я понимаю, так вот и удивлен, что ответ сервера 404, ведь урл обрезается, а значит должен существовать. Существует если вводить без якоря (ответ 200).

Правильнее вопрос было поставить так.


$tekurl = substr ($_SERVER['REQUEST_URI'],1); // получим урл и удалим первый слеш
далее подключаемся к бд и проверяем существование страницы

почему если в урле есть # (якорь) то ответ сервера 404 и как с этим бороться? спасибо

ps ведь в $tekurl пишется адрес без якоря

bukachuk
На сайте с 07.09.2008
Offline
97
#5

404 кто движок отдает или именно сервер??

Если двигло смотрите что там на входе где-то ошибка

P
На сайте с 06.01.2009
Offline
592
#6
bukachuk:
404 кто движок отдает или именно сервер??
Если двигло смотрите что там на входе где-то ошибка

В яВебмастере проверяю - ответ сервера 404.

Движек отдает что все в порядке, так как в странице не выводится надпись "извините, страница не существует".

DiAksID
На сайте с 02.08.2008
Offline
236
#7

может парсер не срабатывает без явного вывода хоть чего-либо на страницу. может срабатывает но криво. может он должен при пустом буфере обмена 404 выдавать, мало ли. движок надо смотреть...

---

на вскидку: при пустом буфере обмена выскакивает какая-то ошибка PHP (отображение ошибок наверняка отключено), не отрабатывается ни поиск страницы в БД ни выдача cms-ной 404. на рухновшей cms-ке, ессено, в заголовки летит 404, а серверная 404-я видимо не определена.

включите отображение ошибок, попробуйте отловить что к чему...

show must go on !!!...
arkadiy_a
На сайте с 11.06.2008
Offline
82
#8
postavkin:
В яВебмастере проверяю - ответ сервера 404.
Движек отдает что все в порядке, так как в странице не выводится надпись "извините, страница не существует".

Заголовки проблемных страниц посмотрите поточней, например через это.

P
На сайте с 06.01.2009
Offline
592
#9
DiAksID:
может парсер не срабатывает без явного вывода хоть чего-либо на страницу. может срабатывает но криво. может он должен при пустом буфере обмена 404 выдавать, мало ли. движок надо смотреть...

---

на вскидку: при пустом буфере обмена выскакивает какая-то ошибка PHP (отображение ошибок наверняка отключено), не отрабатывается ни поиск страницы в БД ни выдача cms-ной 404. на рухновшей cms-ке, ессено, в заголовки летит 404, а серверная 404-я видимо не определена.

включите отображение ошибок, попробуйте отловить что к чему...

Спасибо, включу отображение ошибок и попробую.

Но могу сказать одно - контент выводится правильно если урл вбить с якорем. Т.е. из БД данные берутся правильно. Только в ЯВебмастере ответ 404. Т.е. сам по себе код страницы отрабатывает полностью правильно.

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