рдХреНрдпрд╛ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ PHP рдореЗрдВ Apache mod_rewrite рдФрд░
$ _SERVER ["REQUEST_URI"] рдореЗрдВ
% {REQUEST_URI} рдХрд╛ рдЕрдВрддрд░ рд╣реИ?
рдХреНрдпрд╛ рдЖрдк www рдХреЗ рдЙрдкрд╕рд░реНрдЧ рдХреЗ рд╕рд╛рде рдбреЛрдореЗрди рд╕реЗ 301 рдХрд╛ рд╕рд╣реА рдЕрдЧреНрд░реЗрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдЗрд╕реЗ Apache рд╕реНрддрд░ рдкрд░ .htaccess рдореЗрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?
рдЖрдЦрд┐рд░реА рд╕рд╡рд╛рд▓ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЕрднреА рднреА рдПрдХ рд╕рдорд╛рдзрд╛рди рдХреА рдкреЗрд╢рдХрд╢ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред рдЗрд╕рдХрд╛ рдХрд╛рд░рдг HTTP / 1.1 рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╣реИ, рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ "рд╕рд╛рдЗрдХрд┐рд▓ рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░" (рд╕рд╛рдЗрдЯ рдХреЗ рд▓рд┐рдП рдХреЛрд░ рдмрдирд╛рдпрд╛) рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЕрдзреНрдпрдпрди рдХрд░рдирд╛ рдерд╛ред
рдпрд╣ "рд╣реЛрд╕реНрдЯ:" рдЕрдиреБрд░реЛрдз рдХреЗ HTTP рд╣реЗрдбрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред рдХреБрдЫ рд╢рд░реНрддреЛрдВ рдХреЗ рддрд╣рдд, рдХреБрдЫ рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рд╕рд░реНрд╡рд░ рдХреЛ HTTP / 1.1 рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЗрд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдирджреЗрдЦрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЕрдзрд┐рдХрд╛рдВрд╢ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЗрд╕ рдХреНрд╖реЗрддреНрд░ рдХреЗ рдореВрд▓реНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрд╕рдИрдУ-рдЕрдиреБрдХреВрд▓рди рдХреЗ рд▓рд┐рдПред рдЖрдЧреЗ рджреЗрдЦрддреЗ рд╣реБрдП, рдореИрдВ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░реЙрдХреНрд╕реА (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, nginx) рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░реЗрдЧрд╛ред
рд╕рд░реНрд╡рд░реЛрдВ рдХреЗ рдЧрд▓рдд рд╡реНрдпрд╡рд╣рд╛рд░
рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ
рд╣реИрдмрд░ рдХрдВрдкрдирд┐рдпреЛрдВ рдХреА рд╕рд╛рдЗрдЯреЛрдВ рдкрд░ рдкреБрдирд░рд╛рд╡реГрддрд┐ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдПрдХ рджрд░реНрдЬрди рд╕рд╛рдЗрдЯреЛрдВ рдХреЗ рд▓рд┐рдП, рдЙрдиреНрд╣реЛрдВрдиреЗ рдЗрд╕реЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдХрд┐рдпрд╛, рдФрд░ рдлрд┐рд░ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдХреБрдЫ рд╕рд╛рдЗрдЯреЗрдВ рдЧрд▓рдд рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рдЬрд╡рд╛рдм "рд╕рд╣реА рдврдВрдЧ рд╕реЗ" рджреЗрддреА рд╣реИрдВред рдЙрд╕рдХреЗ рдмрд╛рдж, рдПрдХ рдЫреЛрдЯреА рдкрд░реАрдХреНрд╖рдг рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд▓рд┐рдЦреА рдЧрдИ, рдЬрд┐рд╕рдиреЗ рдкрд░реАрдХреНрд╖рдг рдкреИрдЯрд░реНрди рдФрд░ рд╕рд╛рдЗрдЯреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдмрдврд╝рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреАред
HTTP / 1.1 рдореЗрдВ REQUEST_URI рдХреНрдпрд╛ рдЫреБрдкрд╛рддрд╛ рд╣реИ?
рд╕рд┐рджреНрдзрд╛рдВрдд
HTTP / 1.0
рдореИрдВ HTTP / 1.0 рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░реВрдБрдЧрд╛, рдЬрд┐рд╕рдХрд╛ рд╡рд░реНрдгрди RfC1945
www.w3.org/Protocols/rfc1945/rfc1945 рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреА рдЕрд╡рдзрд┐ рдордИ 1996 рд╣реИред рд╡рд╛рдВрдЫрд┐рдд рдкреГрд╖реНрда рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рд░реНрд╡рд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛ рдФрд░ рдПрдХ рдкрдВрдХреНрддрд┐ рднреЗрдЬрдирд╛ рдкрд░реНрдпрд╛рдкреНрдд рдерд╛:
GET /path/to/resource.html HTTP / 1.0
рдкреНрд░реЙрдХреНрд╕реА рд╕рд░реНрд╡рд░ рдХреЛ рдПрдХреНрд╕реЗрд╕ рдХрд░рддреЗ рд╕рдордп, рдирд┐рд░рдкреЗрдХреНрд╖ рдкрде рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛, рд▓реЗрдХрд┐рди рдкреВрд░рд╛ рдкрддрд╛:
Http://domain.name/path/to/resource.html HTTP / 1.0 рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ
рдпрд╣ рд╕рдм рдЦрдВрдб 5.1.2 "рдЕрдиреБрд░реЛрдз-рдпреВрдЖрд░рдЖрдИ" рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИред
рдореЗрдЬрдмрд╛рди рдЙрдкрд╕реНрдерд┐рддрд┐
рдПрдХ рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рде рдХрдИ рдбреЛрдореЗрди рдирд╛рдореЛрдВ рдХреА рд╕реЗрд╡рд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд░рдЪрдирд╛рдХрд╛рд░реЛрдВ рдиреЗ "рд╣реЛрд╕реНрдЯ:" рдЕрдиреБрд░реЛрдз рд╣реЗрдбрд░ рдХреЛ рдЬреЛрдбрд╝рд╛, рдЬрд┐рд╕рдореЗрдВ рд╡рд╣ рдбреЛрдореЗрди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐ рдпрд╣ рд╢реАрд░реНрд╖ рд▓реЗрдЦ HTTP / 1.0 рдорд╛рдирдХ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХреБрдЫ рд╕рд░реНрд╡рд░реЛрдВ рдФрд░ рдЧреНрд░рд╛рд╣рдХреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рд╣реЛ рдЧрдпрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, wget HTTP / 1.0 рдкрд░ рдЕрдиреБрд░реЛрдз рднреЗрдЬрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди "рд╣реЛрд╕реНрдЯ:" рдЬреЛрдбрд╝рддрд╛ рд╣реИред
HTTP / 1.1
рдЬреВрди 1999 (рдЪреМрджрд╣ рд╕рд╛рд▓ рдкрд╣рд▓реЗ) рдореЗрдВ, HTTP / 1.1 рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛, рдЬрд┐рд╕рдХрд╛ рд╡рд░реНрдгрди RfC2616
www.w3.org/Protocols/rfc2616/rfc2616.html рдореЗрдВ рд╣реИ ред
рдзрд╛рд░рд╛ 14.23 рдореЗрдВ, рдирдП рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдореЗрдВ "рд╣реЛрд╕реНрдЯ" рдлрд╝реАрд▓реНрдб рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз рд╢реАрд░реНрд╖рд▓реЗрдЦ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ:
рдПрдХ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рднреА HTTP / 1.1 рдЕрдиреБрд░реЛрдз рд╕рдВрджреЗрд╢реЛрдВ рдореЗрдВ рдПрдХ рд╣реЛрд╕реНрдЯ рд╣реЗрдбрд░ рдлрд╝реАрд▓реНрдб рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдЕрдиреБрд░реЛрдзрд┐рдд URI рдореЗрдВ рдЕрдиреБрд░реЛрдз рдХреА рдЬрд╛ рд░рд╣реА рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдЗрдВрдЯрд░рдиреЗрдЯ рд╣реЛрд╕реНрдЯ рдирд╛рдо рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИ, рддреЛ рд╣реЛрд╕реНрдЯ рд╣реЗрдбрд░ рдлрд╝реАрд▓реНрдб MUST рдХреЛ рдЦрд╛рд▓реА рдорд╛рди рдХреЗ рд╕рд╛рде рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХреНрд╡реЗрд░реА рд╕реНрдЯреНрд░рд┐рдВрдЧ (
рдЦрдВрдб 5.1.2 ) рд╕реЗ рдЕрдиреБрд░реЛрдз-рдпреВрдЖрд░рдЖрдИ рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрджрд▓рд╛рд╡ рдХрд┐рдП рдЧрдП рдереЗред рдкрд┐рдЫрд▓реЗ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреА рддрд░рд╣, рдкреНрд░реЙрдХреНрд╕реА рд╕рд░реНрд╡рд░ рдХреЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП рдкреВрд░рд╛ рдкрддрд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ ("рдЬрдм рдЕрдиреБрд░реЛрдз рдкреНрд░реЙрдХреНрд╕реА рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реЛ рддреЛ рдирд┐рд░рдкреЗрдХреНрд╖ рд░реВрдк рдЖрд╡рд╢реНрдпрдХ рд╣реИ")ред рд▓реЗрдХрд┐рди рд╕рднреА рд╕рд░реНрд╡рд░реЛрдВ рдХреЛ рдРрд╕реЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рдЬрд╡рд╛рдм рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЧреНрд░рд╛рд╣рдХ рдХреЗрд╡рд▓ рдкреНрд░реЙрдХреНрд╕реА рд╕рд░реНрд╡рд░реЛрдВ рдХреЛ рдРрд╕реЗ рдЕрдиреБрд░реЛрдз рдЬрд╛рд░реА рдХрд░реЗрдВрдЧреЗ:
HTTP рдХреЗ рднрд╛рд╡реА рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рд╕рднреА рдЕрдиреБрд░реЛрдзреЛрдВ рдореЗрдВ рдирд┐рд░рдкреЗрдХреНрд╖рддрд╛ рдХреЗ рд▓рд┐рдП рд╕рдВрдХреНрд░рдордг рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рднреА HTTP / 1.1 рд╕рд░реНрд╡рд░ рдЕрдиреБрд░реЛрдзреЛрдВ рдореЗрдВ рдирд┐рд░рдкреЗрдХреНрд╖ рд░реВрдк рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ, рднрд▓реЗ рд╣реА HTTP / 1.1 рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗрд╡рд▓ рдкреНрд░реЙрдХреНрд╕реА рдХреЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдВрдЧреЗред
рдореИрдВ рдЗрд╕ рддрдереНрдп рдкрд░ рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдкреВрд░реНрдг рдкрддреЗ рдкрд░ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛ (рдирд┐рд░рдкреЗрдХреНрд╖рддрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
http : //www.w3.org/pub/WWW/TheProject.html ), рдЗрд╕рд▓рд┐рдП рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЛ рдХреЗрд╡рд▓ рдкреВрд░реНрдг рдкрде (abs_path, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
/ pub ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ
/WWW/TheProject.html )ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕рд░реНрд╡рд░ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд┐рд░рдкреЗрдХреНрд╖рддрд╛ рдХреЗ рд╕рд╛рде рдЧреНрд░рд╛рд╣рдХреЛрдВ рд╕реЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рдЬрд╡рд╛рдм рджреЗрдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЖрдкрддреНрддрд┐ рд╣реИ рдХрд┐ рдЧреНрд░рд╛рд╣рдХ рдХрд╛ рдЕрдиреБрд░реЛрдз рд╕рд╣реА рдирд╣реАрдВ рд╣реИ, рдореИрдВ рддреБрд░рдВрдд рдЗрд╕реЗ рдмрд╛рд╣рд░ рдХрд░ рджреЗрддрд╛ рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ "рдЧреНрд░рд╛рд╣рдХ рд╣рдореЗрд╢рд╛ рд╕рд╣реА рд╣реЛрддрд╛ рд╣реИ"ред
HTTP / 1.1 рдореЗрдВ рд╣реЛрд╕реНрдЯ рдХрд░реЗрдВ
рдЕрдиреБрд░реЛрдз-рдпреВрдЖрд░рдЖрдИ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рд╣рд╛рдирд┐рд░рд╣рд┐рдд рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди
рдзрд╛рд░рд╛ 5.2 рдореЗрдВ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ: тАЬрдпрджрд┐ рдЕрдиреБрд░реЛрдз-рдпреВрдЖрд░рдЖрдИ рдПрдХ рдирд┐рд░рдкреЗрдХреНрд╖ рд╣реИ, рддреЛ рдореЗрдЬрдмрд╛рди рдЕрдиреБрд░реЛрдз-рдпреВрдЖрд░рдЖрдИ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред рдЕрдиреБрд░реЛрдз рдореЗрдВ рдХрд┐рд╕реА рднреА рд╣реЛрд╕реНрдЯ рд╣реЗрдбрд░ рдлрд╝реАрд▓реНрдб рдорд╛рди рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред тАЭрдпрд╛рдиреА, рдЕрдиреБрд░реЛрдз рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛
Http://domain.name/path/to/resource.html HTTP / 1.1 рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ
рд╣реЛрд╕реНрдЯ: anytext
рдЕрдиреБрд░реЛрдз рд╕реЗ рдореЗрд▓ рдЦрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП
GET /path/to/resource.html HTTP / 1.1
рд╣реЛрд╕реНрдЯ: domain.name
рдХреНрдпрд╛ рдЖрдк "рд╣реЛрд╕реНрдЯ:" рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рддреЗ рд╣реИрдВ рдЬрдм рдирд┐рд░рдкреЗрдХреНрд╖рддрд╛ рдХреЗ рд╕рд╛рде рдХреНрд╡реЗрд░реА рдХреА рдЬрд╛рддреА рд╣реИ?
% {REQUEST_URI} рдФрд░ $ _SERVER ["REQUEST_URI"]
Mod_rewrite рдХреЗ рд▓рд┐рдП рдкреНрд░рд▓реЗрдЦрди рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╣рддрд╛ рд╣реИ:
THE_REQUEST
рдмреНрд░рд╛рдЙрдЬрд╝рд░ рджреНрд╡рд╛рд░рд╛ рд╕рд░реНрд╡рд░ рдХреЛ рднреЗрдЬреА рдЧрдИ рдкреВрд░реНрдг HTTP рдЕрдиреБрд░реЛрдз рд░реЗрдЦрд╛ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, "GET /index.html HTTP / 1.1")ред рдЗрд╕рдореЗрдВ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рджреНрд╡рд╛рд░рд╛ рднреЗрдЬрд╛ рдЧрдпрд╛ рдХреЛрдИ рдЕрддрд┐рд░рд┐рдХреНрдд рд╣реЗрдбрд░ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИред рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЕрдзрд┐рдХрд╛рдВрд╢ рдЕрдиреНрдп рдЪрд░реЛрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд рдЗрд╕ рдорд╛рди рдХреЛ рдЕрдирд╕реИрдкреНрдб (рдбрд┐рдХреЛрдб) рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
REQUEST_URI
рдЕрдиреБрд░реЛрдзрд┐рдд URI рдХрд╛ рдкрде рдШрдЯрдХ, рдЬреИрд╕реЗ "/index.html"ред рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХреНрд╡реЗрд░реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдмрд╛рд╣рд░ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдХрд┐ QUERY_STRING рдирд╛рдордХ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЪрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИред
рдЕрд░реНрдерд╛рдд,% {REQUEST_URI} рдореЗрдВ рд╣рдореЗрд╢рд╛ рдПрдХ рдкреВрд░реНрдг рдорд╛рд░реНрдЧ рд╣реЛрдЧрд╛ рдФрд░ рдХрднреА рднреА рдкреВрд░реНрдг рдкрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред
рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЕрдиреБрд░реЛрдз рднреЗрдЬрддрд╛ рд╣реИ, рддреЛ mod_rewrite рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рдбреЛрдореЗрди рдореЗрдВ "www" рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдорд╛рдирдХ рдПрд╕рдИрдУ рдХрд╛рд░реНрдп рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ:
Http://domain.name/path/to/resource.html HTTP / 1.1 рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ
рд╣реЛрд╕реНрдЯ: www.domain.name
рд▓реЗрдЦ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдореИрдВрдиреЗ Apache mod_rewrite рдореЗрдВ
$ {REQUEST_URI} рдФрд░ PHP рдореЗрдВ
$ _SERVER ["REQUEST_URI"] рдХреЗ рдЕрдВрддрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреВрдЫрд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВ
PHP рдХреЗ рд▓рд┐рдП рдкреНрд░рд▓реЗрдЦрди рд╕реЗ рдПрдХ рдЕрдВрд╢ рджреЗ рджреВрдВрдЧрд╛:
REQUEST_URI
рдпреВрдЖрд░рдЖрдИ рдЬреЛ рдЗрд╕ рдкреЗрдЬ рдХреЛ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛; рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, '/index.html'ред
рдЗрд╕реЗ рдХрд╣реАрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рд▓рд┐рдП PHP / 5.3.13 рдкреВрд░реНрдг рдкрддреЗ рдХреЗ рд╕рд╛рде рдЕрдиреБрд░реЛрдз рдХрд┐рдП рдЬрд╛рдиреЗ рдкрд░ рдкреВрд░реНрдг рд░рд┐рдЯрд░реНрди рджреЗрддрд╛ рд╣реИред
рдЕрднреНрдпрд╛рд╕
рдЖрдЗрдП рдЕрдм рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдХрд┐ рдЬрдм рдЖрдк рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рд░реНрд╡рд░ рдХреЛ рдХреНрд╡реЗрд░реА рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИред рдореИрдВрдиреЗ
рд╣рд╛рдмрд░рд╛ рдХрдВрдкрдирд┐рдпреЛрдВ рдХреЗ рдкреЗрдЬ рд╕реЗ рд╕рд╛рдЗрдЯреЛрдВ рдХреЗ рдкрддреЗ рд▓реЗ рд▓рд┐рдП (рд╕реВрдЪреА рдореЗрдВ рд╡рд╣рд╛рдВ рдмрджрд▓рд╛рд╡ рд╣реБрдЖ, рдореИрдВрдиреЗ рдЗрд╕реЗ рдкрд┐рдЫрд▓реЗ рд╕рдкреНрддрд╛рд╣ рдХреЗ рдЕрдВрдд рдореЗрдВ рд▓рд┐рдпрд╛ рдерд╛)ред рдореИрдВрдиреЗ Node.JS рдкрд░ рдПрдХ рдЫреЛрдЯреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╕реНрдХреЗрдЪ рдХрд┐рдпрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ http_check рдлрд╝рдВрдХреНрд╢рди рдПрдХрд▓ рдЕрдиреБрд░реЛрдз рднреЗрдЬрддрд╛ рд╣реИ, рдФрд░ full_http_check рдХреБрдЫ рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХреБрдЫ рд╕рд░реНрд╡рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдХрдИ рдЕрдиреБрд░реЛрдз рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдбvar net = require('net'); var default_result = function(title) { if (title) { return {'title': 'title', 'step': 'step', 'host': 'host', 'request': 'request', 'header': 'header', 'full_response': 'full_response', 'response': 'response', 'server': 'server', 'length': 'length', 'location': 'location', 'error': 'error'}; } else { return {'title': '', 'step': '', 'host': '', 'request': '', 'header': '', 'full_response': '', 'response': '', 'server': '', 'length': '', 'location': '', 'error': ''}; } }; var format_result = function(result) { return '' + result['title'].toString() + '\t' + result['step'] + '\t' + result['host'] + '\t' + result['request'].toString() + '\t' + result['header'].toString() + '\t' + result['response'].toString() + '\t' + result['server'].toString() + '\t' + result['length'].toString() + '\t' + result['error'].toString() + '\t' + result['location'].toString() + '\t' + result['full_response'].toString(); }; var http_check = function(title, step, host, req, host_hdr) { var host_header = host_hdr || ''; var result = default_result(false); result['title'] = title; result['step'] = step; result['host'] = host; result['request'] = req; result['header'] = host_header; var dat = ''; var client = net.connect({port: 80, host: host}, function() {
рдЕрдм рдкреНрд░рддреНрдпреЗрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рдФрд░ рд╕рд╛рдЗрдЯреЛрдВ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкрд░ рдХрд░реАрдм рд╕реЗ рдирдЬрд╝рд░ рдбрд╛рд▓рддреЗ рд╣реИрдВред
рдЕрдиреБрд░реЛрдз 1
рдирд┐рд░рдкреЗрдХреНрд╖ рдкрде рдФрд░ рд╕рд╣реА рд╣реЛрд╕реНрдЯ рд╣реЗрдбрд░ рд╕рд╣рд┐рдд рд╕рдмрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп HTTP / 1.1 рдЕрдиреБрд░реЛрдз рд╡рд┐рдХрд▓реНрдкред рдХрд┐рд╕реА рднреА рд╕рд░реНрд╡рд░ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдЗрд╕рдХрд╛ рдЬрд╡рд╛рдм рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрд░реНрдерд╛рдд рд╣рдо "HTTP / 1.1 200 OK" рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред
GET /path/to/resource.html HTTP / 1.1
рд╣реЛрд╕реНрдЯ: domain.name
рд╕рднреА рд╕рд░реНрд╡рд░ "HTTP / 1.1 200 рдареАрдХ рд╣реИред" рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд "рд╕рд░реНрд╡рд░" рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╣реЗрдбрд░ рдХреЗ рд▓рд┐рдП рдореВрд▓реНрдпреЛрдВ рдХреА рддрд╛рд▓рд┐рдХрд╛ рд╣реИ:
рдХрдВрдкрдиреА | рд╕рд░реНрд╡рд░ рд╢реАрд░реНрд╖рдХ: |
---|
Apps4All | nginx / 1.0.15 |
badoo | nginx |
рдмреЙрдХреНрд╕ рдЕрд╡рд▓реЛрдХрди | nginx / 1.2.1 |
DevConf | nginx / 1.0.15 |
рдИ-рд▓реАрдЬрди рд▓рд┐рдорд┐рдЯреЗрдб | nginx / 1.0.5 |
рдЖрдИрдмреАрдПрдо | IBM_HTTP_Server |
рдЗрдВрдЯреЗрд▓ | Microsoft-IIS / 7.5 |
рдЬреЗрдЯрдмреНрд░реЗрдиреНрд╕ | nginx |
KolibriOS рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЯреАрдо | lighttpd / 1.4.32 |
Mail.Ru Group | nginx / 1.2.5 |
рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ | Microsoft-IIS / 7.5 |
рдУрдкреЗрд░рд╛ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ ASA | nginx |
Rusonyx | nginx |
UIDG | рдЕрдкрд╛рдЪреЗ |
Zfort рд╕рдореВрд╣ | nginx / 1.4.1 |
рд╡рд┐рдореНрдкреЗрд▓рдХреЙрдо (рдмреАрд▓рд╛рдЗрди) | Microsoft-IIS / 7.5 |
Mosigra | nginx / 1.4.1 |
Nordavind | nginx / 1.0.4 |
Yandex | nginx / 1.2.1 |
рдирд┐рд╡реЗрджрди реи
рдкрд╣рд▓реЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рдПрдХ рдкреНрд░рдХрд╛рд░, рд▓реЗрдХрд┐рди рдкреВрд░реНрдг рдкрде рдХреЗ рдмрдЬрд╛рдп, рдкреВрд░рд╛ рдкрддрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВред
Http://domain.name/path/to/resource.html HTTP / 1.1 рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ
рд╣реЛрд╕реНрдЯ: domain.name
рдЗрд╕ рдЕрдиреБрд░реЛрдз рдХреЗ рдЬрд╡рд╛рдм рдореЗрдВ, рд╕рднреА рд╕рд░реНрд╡рд░реЛрдВ рдиреЗ рдлрд┐рд░ рд╕реЗ рдПрдХрдордд рджрд┐рдЦрд╛рдпрд╛ред "рд▓рд╛рдЗрдЯ" рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рд╕рд░реНрд╡рд░ рдкрд╛рд░реНрд╕ рдХрд░рдирд╛ рдЬрд╛рдирддрд╛ рд╣реИред
рдирд┐рд╡реЗрджрди рей
"рд╣реЛрд╕реНрдЯ:" рдХреЗ рдмрд┐рдирд╛, рдПрдХ рдкреВрд░реНрдг рдкрде рдХреЗ рд╕рд╛рде HTTP / 1.0 рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рдХрд░реЗрдВред "HTTP / 1.0 200 рдареАрдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред"
GET /path/to/resource.html HTTP / 1.0
рддреАрд╕рд░реЗ рдЕрдиреБрд░реЛрдз рдкрд░, рд╕рд░реНрд╡рд░ "рдмреМрдЫрд╛рд░"ред рдФрд░ рдПрдХ рднреА HTTP / 1.0 200 рдареАрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдирд╣реАрдВ рд╣реИред
рдХрдВрдкрдиреА | рд╕рд░реНрд╡рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ |
---|
Apps4All | HTTP / 1.1 301 рд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдЪрд▓рд╛ рдЧрдпрд╛ |
badoo | HTTP / 1.1 302 рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдЪрд▓рд╛ рдЧрдпрд╛ |
рдмреЙрдХреНрд╕ рдЕрд╡рд▓реЛрдХрди | HTTP / 1.1 200 рдареАрдХ рд╣реИ |
DevConf | HTTP / 1.1 404 рдирд╣реАрдВ рдорд┐рд▓рд╛ |
рдИ-рд▓реАрдЬрди рд▓рд┐рдорд┐рдЯреЗрдб | HTTP / 1.1 301 рд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдЪрд▓рд╛ рдЧрдпрд╛ |
рдЖрдИрдмреАрдПрдо | HTTP / 1.1 200 рдареАрдХ рд╣реИ |
рдЗрдВрдЯреЗрд▓ | HTTP / 1.0 400 рдЦрд░рд╛рдм рдЕрдиреБрд░реЛрдз |
рдЬреЗрдЯрдмреНрд░реЗрдиреНрд╕ | HTTP / 1.1 301 рд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдЪрд▓рд╛ рдЧрдпрд╛ |
KolibriOS рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЯреАрдо | HTTP / 1.0 404 рдирд╣реАрдВ рдорд┐рд▓рд╛ |
Mail.Ru Group | HTTP / 1.1 200 рдареАрдХ рд╣реИ |
рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ | HTTP / 1.1 200 рдареАрдХ рд╣реИ |
рдУрдкреЗрд░рд╛ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ ASA | HTTP / 1.1 404 рдирд╣реАрдВ рдорд┐рд▓рд╛ |
Rusonyx | HTTP / 1.1 301 рд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдЪрд▓рд╛ рдЧрдпрд╛ |
UIDG | HTTP / 1.1 404 рдирд╣реАрдВ рдорд┐рд▓рд╛ |
Zfort рд╕рдореВрд╣ | HTTP / 1.1 404 рдирд╣реАрдВ рдорд┐рд▓рд╛ |
рд╡рд┐рдореНрдкреЗрд▓рдХреЙрдо (рдмреАрд▓рд╛рдЗрди) | HTTP / 1.1 302 рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ |
Mosigra | HTTP / 1.1 404 рдирд╣реАрдВ рдорд┐рд▓рд╛ |
Nordavind | HTTP / 1.1 200 рдареАрдХ рд╣реИ |
Yandex | HTTP / 1.1 404 рдирд╣реАрдВ рдорд┐рд▓рд╛ |
рдирд┐рд╡реЗрджрди рек
рдкрд┐рдЫрд▓рд╛ рдЕрдиреБрд░реЛрдз, рд▓реЗрдХрд┐рди "рд╣реЛрд╕реНрдЯ:" рдЬреЛрдбрд╝реЗрдВред рдпрд╣ рдХреЗрд╡рд▓ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдкрд╣рд▓реЗ рдЕрдиреБрд░реЛрдз рд╕реЗ рдЕрд▓рдЧ рд╣реИред
GET /path/to/resource.html HTTP / 1.0
рд╣реЛрд╕реНрдЯ: domain.name
рд╣реЛрд╕реНрдЯ рдиреЗ рд╕рд░реНрд╡рд░ рдкрд░ рдмрд╣реБрдд рд╕рдХрд╛рд░рд╛рддреНрдордХ рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛ - рд╕рднреА рдХреЗ рдкрд╛рд╕ "200 рдУрдХреЗ" рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдереА, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдореЗрдВ HTTP / 1.0: Intel рдФрд░ KolibriOS рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЯреАрдо рдереАред
рдирд┐рд╡реЗрджрди рел
"рд╣реЛрд╕реНрдЯ:" рдХреЗ рдмрд┐рдирд╛, рдкреВрд░реНрдг рдкрддреЗ рдХреЗ рд╕рд╛рде HTTP / 1.0 рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рдХрд░реЗрдВред рдпрд╣ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ "HTTP / 1.0 200 рдареАрдХ рд╣реИред"
Http://domain.name/path/to/resource.html HTTP / 1.0 рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ
рддрд╕реНрд╡реАрд░ рдкрд┐рдЫрд▓реА рдХреНрд╡реЗрд░реА рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реБрд╕рдВрдЧрдд рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рдИ-рд▓реАрдЬрди рд▓рд┐рдорд┐рдЯреЗрдб рд╣реИред рдЬрд╛рд░реА "HTTP / 1.1 500 рдЖрдВрддрд░рд┐рдХ рд╕рд░реНрд╡рд░ рддреНрд░реБрдЯрд┐"ред
рдирд┐рд╡реЗрджрди рем
рдкрд┐рдЫрд▓рд╛ рдЕрдиреБрд░реЛрдз, рд▓реЗрдХрд┐рди "рд╣реЛрд╕реНрдЯ:" рдЬреЛрдбрд╝реЗрдВред рдпрд╣ рдХреЗрд╡рд▓ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рджреВрд╕рд░реЗ рдЕрдиреБрд░реЛрдз рд╕реЗ рдЕрд▓рдЧ рд╣реИред
Http://domain.name/path/to/resource.html HTTP / 1.0 рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ
рд╣реЛрд╕реНрдЯ: domain.name
рдкрд░рд┐рдгрд╛рдо рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЪреМрдереА рдХреНрд╡реЗрд░реА рдХреЗ рд╕рд╛рде рдореЗрд▓ рдЦрд╛рддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рддреН, "рд╣реЛрд╕реНрдЯ:" рдИ-рд▓реАрдЬрди рд╕рд░реНрд╡рд░ рдкрд░ рдПрдХ рдЖрдВрддрд░рд┐рдХ рддреНрд░реБрдЯрд┐ рддрдп рдХреА рд╣реИ
рдирд┐рд╡реЗрджрди 7
рдПрдХ рдкреВрд░реНрдг рдкрддреЗ рдХреЗ рд╕рд╛рде рджреВрд╕рд░реЗ рдЕрдиреБрд░реЛрдз рдХрд╛ рдПрдХ рд╕рдВрд╕реНрдХрд░рдг, рд▓реЗрдХрд┐рди "рд╣реЛрд╕реНрдЯ:" рдореЗрдВ рд╣рдо рдПрдХ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕рдмрдбреЛрдореЗрди рдХреЗ рд▓рд┐рдЦрддреЗ рд╣реИрдВред рдЕрдиреБрд░реЛрдз рдмрд┐рд▓реНрдХреБрд▓ рд╕рд╣реА рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕рд░реНрд╡рд░ рдХреЛ "HTTP / 1.1 200 рдареАрдХ рд╣реИ" рдХреЗ рд╕рд╛рде рдЬрд╡рд╛рдм рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдПред
Http://domain.name/path/to/resource.html HTTP / 1.1 рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ
рд╣реЛрд╕реНрдЯ: void.domain.name
рдирд┐рд╡реЗрджрди 8
рдЕрдм "рд╣реЛрд╕реНрдЯ:" рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдо рдПрдХ рдЕрд╡рд┐рд╢рд┐рд╖реНрдЯ рдбреЛрдореЗрди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВрдЧреЗред рдЕрдиреБрд░реЛрдз рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдмрджрд▓рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреБрдЫ рд╕рд░реНрд╡рд░ рдЕрдм рдЗрд╕реЗ рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
Http://domain.name/path/to/resource.html HTTP / 1.1 рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ
рд╣реЛрд╕реНрдЯ: рд╕реНрдерд╛рдиреАрдп
рдирд┐рд╡реЗрджрди реп
"рд╣реЛрд╕реНрдЯ:" рд╣реЗрдбрд░ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирдЬрд░рдЕрдВрджрд╛рдЬ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕рд▓рд┐рдП рд╣рдо рдПрдХ рдордирдорд╛рдирд╛ рдкрд╛рда рд▓рд┐рдЦреЗрдВрдЧреЗ рдЬреЛ рдмрд╣реБрдд рд╕реЗ рдкрд╛рд╕рд╡рд░реНрдб рдИрд░реНрд╖реНрдпрд╛ рдХрд░реЗрдВрдЧреЗред рдорд╛рдирдХ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рд╣рдо "HTTP / 1.1 200 рдареАрдХ рд╣реИред"
Http://domain.name/path/to/resource.html HTTP / 1.1 рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ
рд╣реЛрд╕реНрдЯ: l-IjFN = fiG (w + J2p: #? {92! M`d ^)
рд╕рд░реНрд╡рд░ 7-9 рдиреЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдЬрд╡рд╛рдм рджрд┐рдпрд╛:
рдХрдВрдкрдиреА | рд╕рд░реНрд╡рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ | рд╕рд░реНрд╡рд░ рд╢реАрд░реНрд╖рдХ: |
---|
Apps4All | HTTP / 1.1 200 рдареАрдХ рд╣реИ | nginx / 1.0.15 |
badoo | HTTP / 1.1 200 рдареАрдХ рд╣реИ | nginx |
рдмреЙрдХреНрд╕ рдЕрд╡рд▓реЛрдХрди | HTTP / 1.1 200 рдареАрдХ рд╣реИ | nginx / 1.2.1 |
DevConf | HTTP / 1.1 500 рдЖрдВрддрд░рд┐рдХ рд╕рд░реНрд╡рд░ рддреНрд░реБрдЯрд┐ | nginx / 1.0.15 |
рдИ-рд▓реАрдЬрди рд▓рд┐рдорд┐рдЯреЗрдб | HTTP / 1.1 500 рдЖрдВрддрд░рд┐рдХ рд╕рд░реНрд╡рд░ рддреНрд░реБрдЯрд┐ | nginx / 1.0.5 |
рдЖрдИрдмреАрдПрдо | HTTP / 1.1 200 рдареАрдХ рд╣реИ | IBM_HTTP_Server |
рдЗрдВрдЯреЗрд▓ | HTTP / 1.0 400 рдЦрд░рд╛рдм рдЕрдиреБрд░реЛрдз | AkamaiGHost |
рдЬреЗрдЯрдмреНрд░реЗрдиреНрд╕ | HTTP / 1.1 200 рдареАрдХ рд╣реИ | nginx |
KolibriOS рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЯреАрдо | HTTP / 1.1 200 рдареАрдХ рд╣реИ | lighttpd / 1.4.32 |
Mail.Ru Group | HTTP / 1.1 200 рдареАрдХ рд╣реИ | nginx / 1.2.5 |
рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ | HTTP / 1.1 200 рдареАрдХ рд╣реИ | Microsoft-IIS / 7.5 |
рдУрдкреЗрд░рд╛ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ ASA | HTTP / 1.1 200 рдареАрдХ рд╣реИ | nginx |
Rusonyx | HTTP / 1.1 200 рдареАрдХ рд╣реИ | nginx |
UIDG | HTTP / 1.1 200 рдареАрдХ рд╣реИ | рдЕрдкрд╛рдЪреЗ |
Zfort рд╕рдореВрд╣ | HTTP / 1.1 200 рдареАрдХ рд╣реИ | nginx / 1.4.1 |
рд╡рд┐рдореНрдкреЗрд▓рдХреЙрдо (рдмреАрд▓рд╛рдЗрди) | HTTP / 1.1 200 рдареАрдХ рд╣реИ | Microsoft-IIS / 7.5 |
Mosigra | HTTP / 1.1 200 рдареАрдХ рд╣реИ | nginx / 1.4.1 |
Nordavind | HTTP / 1.1 200 рдареАрдХ рд╣реИ | nginx / 1.0.4 |
Yandex | HTTP / 1.1 200 рдареАрдХ рд╣реИ | nginx / 1.2.1 |
рдЕрдиреБрд░реЛрдз резреж
рдЧрд▓рдд рдЕрдиреБрд░реЛрдзреЛрдВ рдореЗрдВ рд╕реЗ рдкрд╣рд▓рд╛ред рд╣рдо рд╕рд╣реА "рд╣реЛрд╕реНрдЯ:" рднреЗрдЬреЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдкреВрд░реЗ рдкрддреЗ рдореЗрдВ рд╣рдо рдПрдХ рдирдХреНрд╕рдЯреЗрдб рд╕рдмрдбреЛрдореЗрди рдЬреЛрдбрд╝ рджреЗрдВрдЧреЗред
Http://fake.domain.name/path/to/resource.html HTTP / 1.1 рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ
рд╣реЛрд╕реНрдЯ: domain.name
рдЪреВрдВрдХрд┐ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдкреНрд░рд╢реНрди рд╢реБрд░реВ рд╣реБрдП, рдЗрд╕рд▓рд┐рдП рдкрд░рд┐рдгрд╛рдо рдбрд░рд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдХрдВрдкрдиреА | рд╕рд░реНрд╡рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ |
---|
Apps4All | HTTP / 1.1 301 рд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдЪрд▓рд╛ рдЧрдпрд╛ |
badoo | HTTP / 1.1 301 рд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдЪрд▓рд╛ рдЧрдпрд╛ |
рдмреЙрдХреНрд╕ рдЕрд╡рд▓реЛрдХрди | HTTP / 1.1 200 рдареАрдХ рд╣реИ |
DevConf | HTTP / 1.1 404 рдирд╣реАрдВ рдорд┐рд▓рд╛ |
рдИ-рд▓реАрдЬрди рд▓рд┐рдорд┐рдЯреЗрдб | HTTP / 1.1 301 рд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдЪрд▓рд╛ рдЧрдпрд╛ |
рдЖрдИрдмреАрдПрдо | HTTP / 1.1 200 рдареАрдХ рд╣реИ |
рдЗрдВрдЯреЗрд▓ | HTTP / 1.1 200 рдареАрдХ рд╣реИ |
рдЬреЗрдЯрдмреНрд░реЗрдиреНрд╕ | HTTP / 1.1 301 рд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдЪрд▓рд╛ рдЧрдпрд╛ |
KolibriOS рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЯреАрдо | HTTP / 1.1 404 рдирд╣реАрдВ рдорд┐рд▓рд╛ |
Mail.Ru Group | HTTP / 1.1 200 рдареАрдХ рд╣реИ |
рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ | HTTP / 1.1 200 рдареАрдХ рд╣реИ |
рдУрдкреЗрд░рд╛ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ ASA | HTTP / 1.1 404 рдирд╣реАрдВ рдорд┐рд▓рд╛ |
Rusonyx | HTTP / 1.1 301 рд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдЪрд▓рд╛ рдЧрдпрд╛ |
UIDG | HTTP / 1.1 404 рдирд╣реАрдВ рдорд┐рд▓рд╛ |
Zfort рд╕рдореВрд╣ | HTTP / 1.1 404 рдирд╣реАрдВ рдорд┐рд▓рд╛ |
рд╡рд┐рдореНрдкреЗрд▓рдХреЙрдо (рдмреАрд▓рд╛рдЗрди) | HTTP / 1.1 302 рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ |
Mosigra | HTTP / 1.1 301 рд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдЪрд▓рд╛ рдЧрдпрд╛ |
Nordavind | HTTP / 1.1 200 рдареАрдХ рд╣реИ |
Yandex | HTTP / 1.1 404 рдирд╣реАрдВ рдорд┐рд▓рд╛ |
рд▓рдЧрднрдЧ рдПрдХ рддрд┐рд╣рд╛рдИ рд╕рд░реНрд╡рд░реЛрдВ рдиреЗ рд╕рд╣реА рд░рд╛рд╕реНрддрд╛ (рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд) рд╕реБрдЭрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдореЗрдВ рд╕рдордп рдмрд░реНрдмрд╛рдж рдирд╣реАрдВ рдХрд┐рдпрд╛ред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдХрдИ рд╕рд░реНрд╡рд░ рдХреЗрд╡рд▓ рдореБрдЦреНрдп рдкреГрд╖реНрда рдкрд░ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдХрд░рддреЗ рд╣реИрдВред
рдирд┐рд╡реЗрджрди резрез
рдЕрдм рдПрдХ рдЧреИрд░-рдореМрдЬреВрдж рдбреЛрдореЗрди рднреЗрдЬрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред
Http: //local.fake/path/to/resource.html HTTP / 1.1 рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ
рд╣реЛрд╕реНрдЯ: domain.name
рдпрд╣рд╛рдВ рдкрд░рд┐рдгрд╛рдо рдкрд┐рдЫрд▓реЗ рдЕрдиреБрд░реЛрдз рдХреЗ рд╕рд╛рде рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди "рдПрдЪрдЯреАрдЯреАрдкреА / 1.1 301 рдореВрд╡реНрдб рдкрд░рдорд╛рдиреЗрдВрдЯ" рдХреЗ рдмрдЬрд╛рдп рдореЛрд╕рд┐рдЧрд░рд╛ рдиреЗ рдкрд╣рд▓реЗ рд╣реА "HTTP / 1.1 404 Not Found" рдЬрд╛рд░реА рдХрд░ рджрд┐рдпрд╛ред
рдЕрдиреБрд░реЛрдз 12
рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдордирдорд╛рдирд╛ рдкрд╛рда рдПрдХ рдбреЛрдореЗрди рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░реЗрдЧрд╛?
GET http: // l-IjFN = fiG (w + J2p: #ред {92! M`d ^? / Path / to / resource.html HTTP / 1.1
рд╣реЛрд╕реНрдЯ: domain.name
"HTTP / 1.1 200 OK" рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЗрдВрдЯреЗрд▓ рдФрд░ рдУрдкреЗрд░рд╛ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдПрдПрд╕рдП рд╕реЗ рдЖрдИ рд╣реИред IBM рдФрд░ рдореЛрд╕рд┐рдЧреНрд░рд╛ рдиреЗ HTTP / 1.1 404 Not Found рдХреЛ рд╡рд╛рдкрд╕ рдХрд░ рджрд┐рдпрд╛ рд╣реИред рдмрд╛рдХреА рд╕рднреА рдиреЗ 404 рдмреИрдб рд░рд┐рдХреНрд╡реЗрд╕реНрдЯ рд▓рд┐рдЦреА, рдЬрд┐рд╕рдореЗрдВ рдмрд┐рдирд╛ рд╣реЗрдбрд░ рд╡рд╛рд▓рд╛ рд╣рд┐рд╕реНрд╕рд╛ рдерд╛ (HTTP / 1.0 рдореЗрдВ рд╕рдВрднрд╛рд╡рд┐рдд рд╡рд┐рдХрд▓реНрдк)ред
рдирд┐рд╡реЗрджрди резрей
рдЧреНрдпрд╛рд░рд╣рд╡реЗрдВ рдЕрдиреБрд░реЛрдз рдХреА рдПрдХ рдкреНрд░рддрд┐, рд▓реЗрдХрд┐рди "рд╣реЛрд╕реНрдЯ:" рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдЙрдкрдбреЛрдореЗрди рдХреЗ рд╕рд╛рде рднреАред рдпрд╣ рд╢рд╛рдпрдж рд╣реА рдЕрдиреНрдп рдЧрд▓рдд рд╕рдВрдпреЛрдЬрдиреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред
Http: //local.fake/path/to/resource.html HTTP / 1.1 рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ
рд╣реЛрд╕реНрдЯ: void.domain.name
рдкрд░рд┐рдгрд╛рдо рднреА рдЕрдиреБрд░реЛрдз 11 рдХреА рдПрдХ рдкреНрд░рддрд┐ рдмрди рдЧрдП, рд▓реЗрдХрд┐рди рдЗрдВрдЯреЗрд▓ рдиреЗ рдЖрддреНрдорд╕рдорд░реНрдкрдг рдХрд░ рджрд┐рдпрд╛ рдФрд░ "HTTP / 1.0 400 рдЦрд░рд╛рдм рдЕрдиреБрд░реЛрдз" рд╡рд╛рдкрд╕ рдХрд░ рджрд┐рдпрд╛ред
рдирд┐рд╡реЗрджрди резрек
рджреВрд╕рд░рд╛ рдЕрдиреБрд░реЛрдз, рд▓реЗрдХрд┐рди рд╣рдо рдкреВрд░реНрдг рдкрддреЗ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╕рдордп рдПрдХ рдЧреИрд░-рдореМрдЬреВрдж рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреЛрдИ рдЧрд▓рддреА рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред
Hbr рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ: //domain.name/path/to/resource.html HTTP / 1.1
рд╣реЛрд╕реНрдЯ: domain.name
рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдХрд╛рдлреА рд╕рд╛рдЗрдЯреЗрдВ HABR рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреА рд╣реИрдВ:
рдХрдВрдкрдиреА | рд╕рд░реНрд╡рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ |
---|
Apps4All | HTTP / 1.1 200 рдареАрдХ рд╣реИ |
badoo | HTTP / 1.1 200 рдареАрдХ рд╣реИ |
рдмреЙрдХреНрд╕ рдЕрд╡рд▓реЛрдХрди | HTTP / 1.1 200 рдареАрдХ рд╣реИ |
DevConf | HTTP / 1.1 200 рдареАрдХ рд╣реИ |
рдИ-рд▓реАрдЬрди рд▓рд┐рдорд┐рдЯреЗрдб | HTTP / 1.1 200 рдареАрдХ рд╣реИ |
рдЖрдИрдмреАрдПрдо | HTTP / 1.1 200 рдареАрдХ рд╣реИ |
рдЗрдВрдЯреЗрд▓ | HTTP / 1.0 400 рдЦрд░рд╛рдм рдЕрдиреБрд░реЛрдз |
рдЬреЗрдЯрдмреНрд░реЗрдиреНрд╕ | HTTP / 1.1 200 рдареАрдХ рд╣реИ |
KolibriOS рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЯреАрдо | HTTP / 1.1 301 рд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдЪрд▓рд╛ рдЧрдпрд╛ |
Mail.Ru Group | HTTP / 1.1 200 рдареАрдХ рд╣реИ |
рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ | HTTP / 1.1 400 рдЦрд░рд╛рдм рдЕрдиреБрд░реЛрдз |
рдУрдкреЗрд░рд╛ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ ASA | HTTP / 1.1 400 BAD_REQUEST |
Rusonyx | HTTP / 1.1 200 рдареАрдХ рд╣реИ |
UIDG | HTTP / 1.1 200 рдареАрдХ рд╣реИ |
Zfort рд╕рдореВрд╣ | HTTP / 1.1 200 рдареАрдХ рд╣реИ |
рд╡рд┐рдореНрдкреЗрд▓рдХреЙрдо (рдмреАрд▓рд╛рдЗрди) | HTTP / 1.1 400 рдЦрд░рд╛рдм рдЕрдиреБрд░реЛрдз |
Mosigra | HTTP / 1.1 400 BAD_REQUEST |
Nordavind | HTTP / 1.1 200 рдареАрдХ рд╣реИ |
Yandex | HTTP / 1.1 200 рдареАрдХ рд╣реИ |
рдЕрдиреБрд░реЛрдз 15
рдЖрдЗрдП рдЕрдВрдд рдореЗрдВ рд╕рд░реНрд╡рд░ рдХреЗ рдкреНрд░рддрд┐рд░реЛрдз рдХреЛ рддреЛрдбрд╝рдиреЗ рдФрд░ рдкрд┐рдЫрд▓реЗ рдЕрдиреБрд░реЛрдз рднреЗрдЬрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдЧрд▓рдд рдЙрдкрдбреЛрдореЗрди рдХреЗ рд╕рд╛рдеред
рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ: //void.domain.name/path/to/resource.html HTTP / 1.1
рд╣реЛрд╕реНрдЯ: domain.name
рдкрд░рд┐рдгрд╛рдо рджрд╕рд╡реАрдВ рдХреНрд╡реЗрд░реА рдХреЗ рд╕рдорд╛рди рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рднреА рдкрд░рд┐рд╡рд░реНрддрди рд╣реИрдВ:
рдХрдВрдкрдиреА | рдЕрдиреБрд░реЛрдз резреж | рдЕрдиреБрд░реЛрдз 15 |
---|
Apps4All | HTTP / 1.1 301 рд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдЪрд▓рд╛ рдЧрдпрд╛ | HTTP / 1.1 301 рд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдЪрд▓рд╛ рдЧрдпрд╛ |
badoo | HTTP / 1.1 301 рд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдЪрд▓рд╛ рдЧрдпрд╛ | HTTP / 1.1 301 рд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдЪрд▓рд╛ рдЧрдпрд╛ |
рдмреЙрдХреНрд╕ рдЕрд╡рд▓реЛрдХрди | HTTP / 1.1 200 рдареАрдХ рд╣реИ | HTTP / 1.1 200 рдареАрдХ рд╣реИ |
DevConf | HTTP / 1.1 404 рдирд╣реАрдВ рдорд┐рд▓рд╛ | HTTP / 1.1 404 рдирд╣реАрдВ рдорд┐рд▓рд╛ |
рдИ-рд▓реАрдЬрди рд▓рд┐рдорд┐рдЯреЗрдб | HTTP / 1.1 301 рд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдЪрд▓рд╛ рдЧрдпрд╛ | HTTP / 1.1 301 рд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдЪрд▓рд╛ рдЧрдпрд╛ |
рдЖрдИрдмреАрдПрдо | HTTP / 1.1 200 рдареАрдХ рд╣реИ | HTTP / 1.1 200 рдареАрдХ рд╣реИ |
рдЗрдВрдЯреЗрд▓ | HTTP / 1.1 200 рдареАрдХ рд╣реИ | HTTP / 1.0 400 рдЦрд░рд╛рдм рдЕрдиреБрд░реЛрдз |
рдЬреЗрдЯрдмреНрд░реЗрдиреНрд╕ | HTTP / 1.1 301 рд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдЪрд▓рд╛ рдЧрдпрд╛ | HTTP / 1.1 301 рд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдЪрд▓рд╛ рдЧрдпрд╛ |
KolibriOS рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЯреАрдо | HTTP / 1.1 404 рдирд╣реАрдВ рдорд┐рд▓рд╛ | HTTP / 1.1 301 рд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдЪрд▓рд╛ рдЧрдпрд╛ |
Mail.Ru Group | HTTP / 1.1 200 рдареАрдХ рд╣реИ | HTTP / 1.1 200 рдареАрдХ рд╣реИ |
рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ | HTTP / 1.1 200 рдареАрдХ рд╣реИ | HTTP / 1.1 400 рдЦрд░рд╛рдм рдЕрдиреБрд░реЛрдз |
рдУрдкреЗрд░рд╛ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ ASA | HTTP / 1.1 404 рдирд╣реАрдВ рдорд┐рд▓рд╛ | HTTP / 1.1 400 BAD_REQUEST |
Rusonyx | HTTP / 1.1 301 рд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдЪрд▓рд╛ рдЧрдпрд╛ | HTTP / 1.1 301 рд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдЪрд▓рд╛ рдЧрдпрд╛ |
UIDG | HTTP / 1.1 404 рдирд╣реАрдВ рдорд┐рд▓рд╛ | HTTP / 1.1 404 рдирд╣реАрдВ рдорд┐рд▓рд╛ |
Zfort рд╕рдореВрд╣ | HTTP / 1.1 404 рдирд╣реАрдВ рдорд┐рд▓рд╛ | HTTP / 1.1 404 рдирд╣реАрдВ рдорд┐рд▓рд╛ |
рд╡рд┐рдореНрдкреЗрд▓рдХреЙрдо (рдмреАрд▓рд╛рдЗрди) | HTTP / 1.1 302 рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ | HTTP / 1.1 400 рдЦрд░рд╛рдм рдЕрдиреБрд░реЛрдз |
Mosigra | HTTP / 1.1 301 рд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдЪрд▓рд╛ рдЧрдпрд╛ | HTTP / 1.1 400 BAD_REQUEST |
Nordavind | HTTP / 1.1 200 рдареАрдХ рд╣реИ | HTTP / 1.1 200 рдареАрдХ рд╣реИ |
Yandex | HTTP / 1.1 404 рдирд╣реАрдВ рдорд┐рд▓рд╛ | HTTP / 1.1 404 рдирд╣реАрдВ рдорд┐рд▓рд╛ |
рдирд┐рд╡реЗрджрди резрем
рдЖрдЗрдП рдПрдХ рдордирдорд╛рдиреЗ рдбреЛрдореЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред
GET habr: //local.fake/path/to/resource.html HTTP / 1.1
рд╣реЛрд╕реНрдЯ: domain.name
рдкрд░рд┐рдгрд╛рдо рдкрд┐рдЫрд▓реА рдХреНрд╡реЗрд░реА рд╕реЗ рдореЗрд▓ рдЦрд╛рддреЗ рдереЗред
рдирд┐рд╡реЗрджрди рез 17
рдФрд░ рддреАрд╕рд░реА рдмрд╛рд░ рд╣рдо рдбреЛрдореЗрди рдХреЛ рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рдЯреЗрдХреНрд╕реНрдЯ рд╕реЗ рдмрджрд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВрдЧреЗред
GET habr: // l-IjFN = fiG (w + J2p: #ред {92 & M`d ^? / Path / to / resource.html HTTP / 1.1
рд╣реЛрд╕реНрдЯ: domain.name
рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рд░реНрд╡рд░ рд╕реЗ рдПрдХ рднреА рд╕рдХрд╛рд░рд╛рддреНрдордХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдирд╣реАрдВ рд╣реИред 12 рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд╛рдЗрдЯреЛрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рд╣реИрдВ:
рдХрдВрдкрдиреА | рдЕрдиреБрд░реЛрдз 12 | рдирд┐рд╡реЗрджрди рез 17 |
---|
рдЗрдВрдЯреЗрд▓ | HTTP / 1.1 200 рдареАрдХ рд╣реИ | HTTP / 1.0 400 рдЦрд░рд╛рдм рдЕрдиреБрд░реЛрдз |
KolibriOS рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЯреАрдо | HTTP / 1.1 400 рдЦрд░рд╛рдм рдЕрдиреБрд░реЛрдз | HTTP / 1.1 301 рд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдЪрд▓рд╛ рдЧрдпрд╛ |
рдУрдкреЗрд░рд╛ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ ASA | HTTP / 1.1 200 рдареАрдХ рд╣реИ | HTTP / 1.1 400 BAD_REQUEST |
Mosigra | HTTP / 1.1 404 рдирд╣реАрдВ рдорд┐рд▓рд╛ | HTTP / 1.1 400 BAD_REQUEST |
рдирд┐рд╡реЗрджрди рез 18
рдЕрдм рдЪрд▓реЛ рд╕рд╣реА "рд╣реЛрд╕реНрдЯ:" рд╣реЗрдбрд░ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВред
GET habr: // l-IjFN = fiG (w + J2p: #ред {92 & M`d ^? / Path / to / resource.html HTTP / 1.1
рд╣реЛрд╕реНрдЯ: рд╕реНрдерд╛рдиреАрдп
рдкрд┐рдЫрд▓реЗ рдкрд░рд┐рдгрд╛рдо рд╕реЗ рд╕рд┐рд░реНрдл рдПрдХ рдмрджрд▓рд╛рд╡ - рдХреЛрд▓реАрдмреНрд░рд┐рдЬрд╝ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЯреАрдо рд╕рд░реНрд╡рд░ рдиреЗ "HTTP / 1.1 301 рдореВрд╡реНрдб рдкрд░рдорд╛рдиреЗрдВрдЯрд▓реА" рдХреЗ рдмрдЬрд╛рдп "HTTP / 1.1 404 Not Found" рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ред
рдЕрдиреБрд░реЛрдз рдПрди
рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рдЕрдиреНрдп рдХреНрд╡реЗрд░реА рд╡рд┐рдХрд▓реНрдк рдХреЛ рдЖрдЬрд╝рдорд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд▓рд┐рдЦреЗрдВред рдФрд░ рдЖрдк рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдирд┐рд╖реНрдХрд░реНрд╖
рдЖрдЗрдП рдХреБрдЫ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рд▓рдЧрднрдЧ рд╕рднреА рд╕рдореАрдХреНрд╖рд┐рдд рд╕рд░реНрд╡рд░реЛрдВ рдиреЗ HTTP / 1.1 рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рд╕рд╣реА рдЙрддреНрддрд░ рджрд┐рдпрд╛ред рдЕрдкрд╡рд╛рдж DevConf, e-Legion Ltd. рдФрд░ рдЗрдВрдЯреЗрд▓ред рдкрд╣рд▓реЗ рджреЛ рдЙрдкрдпреЛрдЧ nginx, рдЗрд╕рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛ рдЗрд╕рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред рдЗрдВрдЯреЗрд▓ AkamaiGHost рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдпрд╛ рддреЛ рдЕрдиреБрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдпрд╛ HTTP / 1.1 рдХрд╛ рдЦрд░рд╛рдм рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рдХрд╛рд░рдгреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдирдЧрдиреЗрдХреНрд╕ рд╣реИ (рдпрд╣ 19 рдореЗрдВ рд╕реЗ 14 рд╕рд░реНрд╡рд░реЛрдВ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛)ред рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдЕрдВрддрд░ рдХреЗ рдХрд╛рд░рдг, UIDG рдХреЗ рд▓рд┐рдП nginx / 1.0.10 рдФрд░ nginx / 1.4.1 рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреА рдЦреЛрдЬ рдХреА рдЧрдИ рдереАред
рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИ? рдЕрдкрд╛рдЪреЗ рдХреЛ рдПрд╕рдИрдУ рдХреЗ рд╕рд╛рде рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ рддрд╛рдХрд┐ рдпрд╣ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдПрдХ рдЧрд▓рдд "рд╣реЛрд╕реНрдЯ:" рдХреЗ рд╕рд╛рде рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░реЗ рдФрд░ рдпрд╣ рдХреЗрд╡рд▓ рдХреНрд╡реЗрд░реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдкреВрд░реНрдг рдкрддреЗ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реЛред
"рдЧрд▓рдд" рд╕рд╣реА рдкреНрд░рд╢реНрдиреЛрдВ рдХрд╛ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЕрд░реНрде рдХреНрдпрд╛ рд╣реИ? рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рднреА рднреЗрджреНрдпрддрд╛ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛ред рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд▓рдЧрднрдЧ рдкрдВрджреНрд░рд╣ рд╡рд░реНрд╖реЛрдВ рдореЗрдВ рдХрд┐рд╕реА рдиреЗ рдирд╣реАрдВ рд╕реАрдЦрд╛ рдХрд┐ рд╕рд╣реА HTTP / 1.1 рд╕рд░реНрд╡рд░ рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдП?
PS рдЕрдкрд╛рдЪреЗ mod_rewrite рдФрд░
$ _SERVER ["REQUEST_URI"] PHP рдореЗрдВ
% {REQUEST_URI} рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдХреЛ рдпрд╛рдж рд░рдЦреЗрдВред
UPD1:рдирд┐рд╡реЗрджрди рез реп
AEP рдХреА рд╕рд▓рд╛рд╣ рдкрд░
, рдореИрдВрдиреЗ рджреВрд╕рд░рд╛ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдореЗрдЬрдмрд╛рди рдХреЛ рдПрдХ рдФрд░ рд╢реВрдиреНрдп рдмрд╛рдЗрдЯ рдФрд░ рдХреБрдЫ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЬреЛрдбрд╝рд╛ред рдпрд╣ рдЗрд╕ рдмрд╛рдд рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рдерд╛ рдХрд┐ рд╕рд░реНрд╡рд░ рд╢реВрдиреНрдп рдмрд╛рдЗрдЯ рдХреЗ рд╕рд╛рде рд╣реЛрд╕реНрдЯ рдХреЛ рдХрд┐рддрдиреА рдЕрдЪреНрдЫреА рддрд░рд╣ рдЕрдирджреЗрдЦрд╛ рдХрд░реЗрдЧрд╛ред
Http://domain.name/path/to/resource.html HTTP / 1.1 рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ
рд╣реЛрд╕реНрдЯ: domain.name {рд╢реВрдиреНрдп рдмрд╛рдЗрдЯ} fake_and_void
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЯреЗрдореНрдкрд▓реЗрдЯ рдЬреЛрдбрд╝реЗ:
http_check(title, '19', parts[1], 'GET http://' + parts[1] + parts[2] + ' HTTP/1.1', parts[1] + '\0fake_and_void_text');
рд╕рднреА рд╕рд░реНрд╡рд░ рдиреЗ рдЖрдИрдмреАрдПрдо, рдУрдкреЗрд░рд╛ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдПрдПрд╕рдП рдФрд░ рдореЛрд╕рд┐рдЧрд░рд╛ рдХреЛ рдЫреЛрдбрд╝рдХрд░ "HTTP / 1.1 400 рдмреИрдб рд░рд┐рдХреНрд╡реЗрд╕реНрдЯ" рд▓реМрдЯрд╛ рджреАред
рдЬрдм рдореИрдВрдиреЗ рдЕрдиреБрд░реЛрдз рдкрд░ рдПрдХ рд╢реВрдиреНрдп рдмрд╛рдЗрдЯ рдЬреЛрдбрд╝рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рддреЛ рдЖрдИрдмреАрдПрдо рдФрд░ рдУрдкреЗрд░рд╛ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд╕рднреА рдиреЗ 400 рддреНрд░реБрдЯрд┐ рдХреА рд╕реВрдЪрдирд╛ рджреАред