LINUX.ORG.RU
ФорумTalks

Блин. Ничего не понимаю. Как оно редиректит-то?


0

0

Блин. Ничего не понимаю. Как оно редиректит-то?

Был когда-то форум на balancer.ru/forums

Потом переехал в отдельный домен. Через прописывание правила в конфиге лайти. Всё прекрасно пашет.

Но сегодня заметил, что не работает моя выдиралка имён из ссылок в сообщениях форума. Обнаружилась интересная вещь. Не смотря на то, что браузер прекрасно обрабатывает и редиректит balancer.ru/forums, тот же wget выдирает мою дефолтовую «Not found» из фреймворка. С 200-м кодом.

$ wget -S --spider 'http://balancer.ru/forums/'
Включен режим робота. Проверка существования удалённого файла.
--2009-04-04 06:09:42--  http://balancer.ru/forums/
Распознаётся balancer.ru... 89.108.87.121
Устанавливается соединение с balancer.ru|89.108.87.121|:80... соединение установлено.
Запрос HTTP послан, ожидается ответ... 
  HTTP/1.0 200 OK
  Connection: keep-alive
  Set-Cookie: PHPSESSID=49e262112ed982fbd14c1e055df0fa23; path=/
  Expires: Thu, 19 Nov 1981 08:52:00 GMT
  Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
  Pragma: no-cache
  X-Bors: v2
  Content-type: text/html; charset=utf-8
  Date: Sat, 04 Apr 2009 02:09:42 GMT
  Server: lighttpd/1.4.20
Длина: нет информации [text/html]
Удалённый файл существует и может содержать дополнительные
ссылки, но рекурсия отключена -- не загружается.

Так вот, вопрос, как такое возможно? Вызов вообще не должен передаваться на мой фреймворк. Но раз уж передаётся, то почему происходит редирект в браузере? Ни по коду HTTP-статуса редиректа нет, ни по Location: в хедере...

★★★★★

f3ex@f3ex:~/tmp$ curl --trace 1.txt http://balancer.ru/forums
f3ex@f3ex:~/tmp$ cat 1.txt
== Info: About to connect() to balancer.ru port 80 (#0)
== Info: Trying 89.108.87.121... == Info: connected
== Info: Connected to balancer.ru (89.108.87.121) port 80 (#0)
=> Send header, 155 bytes (0x9b)
0000: 47 45 54 20 2f 66 6f 72 75 6d 73 20 48 54 54 50 GET /forums HTTP
0010: 2f 31 2e 31 0d 0a 55 73 65 72 2d 41 67 65 6e 74 /1.1..User-Agent
0020: 3a 20 63 75 72 6c 2f 37 2e 31 38 2e 32 20 28 69 : curl/7.18.2 (i
0030: 34 38 36 2d 70 63 2d 6c 69 6e 75 78 2d 67 6e 75 486-pc-linux-gnu
0040: 29 20 6c 69 62 63 75 72 6c 2f 37 2e 31 38 2e 32 ) libcurl/7.18.2
0050: 20 4f 70 65 6e 53 53 4c 2f 30 2e 39 2e 38 67 20 OpenSSL/0.9.8g
0060: 7a 6c 69 62 2f 31 2e 32 2e 33 2e 33 20 6c 69 62 zlib/1.2.3.3 lib
0070: 69 64 6e 2f 31 2e 38 0d 0a 48 6f 73 74 3a 20 62 idn/1.8..Host: b
0080: 61 6c 61 6e 63 65 72 2e 72 75 0d 0a 41 63 63 65 alancer.ru..Acce
0090: 70 74 3a 20 2a 2f 2a 0d 0a 0d 0a pt: */*....
<= Recv header, 32 bytes (0x20)
0000: 48 54 54 50 2f 31 2e 31 20 33 30 31 20 4d 6f 76 HTTP/1.1 301 Mov
0010: 65 64 20 50 65 72 6d 61 6e 65 6e 74 6c 79 0d 0a ed Permanently..
<= Recv header, 41 bytes (0x29)
0000: 4c 6f 63 61 74 69 6f 6e 3a 20 68 74 74 70 3a 2f Location: http:/
0010: 2f 6c 61 32 2e 62 61 6c 61 6e 63 65 72 2e 72 75 /la2.balancer.ru
0020: 2f 66 6f 72 75 6d 2f 0d 0a /forum/..
<= Recv header, 19 bytes (0x13)
0000: 43 6f 6e 74 65 6e 74 2d 4c 65 6e 67 74 68 3a 20 Content-Length:
0010: 30 0d 0a 0..
<= Recv header, 37 bytes (0x25)
0000: 44 61 74 65 3a 20 53 61 74 2c 20 30 34 20 41 70 Date: Sat, 04 Ap
0010: 72 20 32 30 30 39 20 30 34 3a 34 35 3a 31 38 20 r 2009 04:45:18
0020: 47 4d 54 0d 0a GMT..
<= Recv header, 25 bytes (0x19)
0000: 53 65 72 76 65 72 3a 20 6c 69 67 68 74 74 70 64 Server: lighttpd
0010: 2f 31 2e 34 2e 32 30 0d 0a /1.4.20..
<= Recv header, 2 bytes (0x2)
0000: 0d 0a ..
== Info: Connection #0 to host balancer.ru left intact
== Info: Closing connection #0


> Location: http://la2.balancer.ru/forum/

f3ex ★★
()
Ответ на: комментарий от f3ex

>Location:

Гм.

А почему тогда wget ничего не показывает? И curl_exec в PHP не редиректится? Очень странно :-/

KRoN73 ★★★★★
() автор топика
Ответ на: комментарий от KRoN73

действительно хм.. Я вконце слеш не дописал, соответственно ищется файл и каталог в первом и во втором случае.

Со слешем:
curl --trace 1.txt http://balancer.ru/forums/
Page 'http://balancer.ru/forums/' not found

...
HTTP/1.1 200 OK.
...
0000: 32 62 0d 0a 50 61 67 65 20 27 68 74 74 70 3a 2f 2b..Page 'http:/
0010: 2f 62 61 6c 61 6e 63 65 72 2e 72 75 2f 66 6f 72 /balancer.ru/for
0020: 75 6d 73 2f 27 20 6e 6f 74 20 66 6f 75 6e 64 0d ums/' not found.


Собственно, наверно, в реврайты нужно смотреть..

f3ex ★★
()
Ответ на: комментарий от iSage

>CURLOPT_FOLLOWLOCATION

Изначально стоит. Не помогает.

KRoN73 ★★★★★
() автор топика
Ответ на: комментарий от f3ex

Кинул ответ на http://balancer.ru/2009/04/04/post-1892524.html

А то ЛОР задолбал уже своими «String index out of range: 34

К сожалению, произошла исключительная ситуация при генерации страницы.

Произошла непредвиденая ошибка. Администраторы получили об этом сигнал.»

...

Интересно, может, хоть открытие сорцов позволит кому-нибудь заняться этой проблемой? :)

KRoN73 ★★★★★
() автор топика
Ответ на: комментарий от f3ex

>Собственно, наверно, в реврайты нужно смотреть..

Там всё просто:

url.redirect = (
    "^/forums.*" => "http://la2.balancer.ru/forum/",
)

...

Прикол-то не в этом, а в том, что внутри браузера всё работает. Из
curl (собственно, и поймал-то на том, что ссылка не выдёргивается) -
не редиректится. wget тоже дёргает без редиректа. Хотя массу других
подобных записей дёргает без проблем.

"^/\?id=([0-9]+)$" => "http://airbase.ru/top/logos/$1.png",

и в итоге:

$ wget -S --spider http://top.airbase.ru/?id=1
Включен режим робота. Проверка существования удалённого файла.
--2009-04-04 21:47:24--  http://top.airbase.ru/?id=1
Распознаётся top.airbase.ru... 89.108.87.121
Устанавливается соединение с top.airbase.ru|89.108.87.121|:80... соединение установлено.
Запрос HTTP послан, ожидается ответ... 
  HTTP/1.0 301 Moved Permanently
  Connection: keep-alive
  Location: http://airbase.ru/top/logos/1.png
  Date: Sat, 04 Apr 2009 17:47:22 GMT
  Server: lighttpd/1.4.20
Адрес: http://airbase.ru/top/logos/1.png [переход]
Включен режим робота. Проверка существования удалённого файла.
--2009-04-04 21:47:24--  http://airbase.ru/top/logos/1.png
Распознаётся airbase.ru... 89.108.87.121
Устанавливается соединение с airbase.ru|89.108.87.121|:80... соединение установлено.
Запрос HTTP послан, ожидается ответ... 
  HTTP/1.0 200 OK
  Connection: keep-alive
  Content-Type: image/png
  Accept-Ranges: bytes
  ETag: "708391619"
  Last-Modified: Sat, 04 Apr 2009 17:35:04 GMT
  Content-Length: 793
  Date: Sat, 04 Apr 2009 17:47:22 GMT
  Server: lighttpd/1.4.20
Длина: 793 [image/png]
Удалённый файл существует.

KRoN73 ★★★★★
() автор топика
Ответ на: комментарий от KRoN73

ага, работает, если вырубать autourl. Спасибо Белке.

KRoN73 ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.