рджреЛ-рд╕рд╛рдордирд╛ REQUEST_URI рдпрд╛ рд╕рд╣реА HTTP / 1.1 рд╕рд░реНрд╡рд░ рдХреА рддрд▓рд╛рд╢ рдореЗрдВ

рдХреНрдпрд╛ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ 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() { //'connect' listener client.on('data', function (data) { dat = dat + data; var lines = dat.toString().split('\r\n'); result['full_response'] = JSON.stringify(dat.toString().split('\r\n\r\n')[0]); result['response'] = lines[0] || false; if (lines[0].substring(0, 5) == 'HTTP/') { var i = 1; while (lines[i] != '') { var title = lines[i].match(/^([^:]+:)\s(.+)$/); if (title[1] == 'Location:') { result['location'] = title[2]; } else if (title[1] == 'Server:') { result['server'] = title[2]; } else if (title[1] == 'Content-Length:') { result['length'] = title[2]; } i++; } if (dat.indexOf('\r\n\r\n') >= 0) { client.end(); client.destroy(); } } else { client.end(); client.destroy(); } }); client.on('end', function () { console.log('client disconnected'); }); client.on('error', function (error) { console.log('ERROR: ' + error.toString()); }); client.on('timeout', function () { console.log('Timeout'); }); client.on('close', function (had_error) { result['error'] = result['error'] || had_error || ''; console.log(format_result(result)); }); client.write(req + '\r\n'); host_hdr && client.write('Host: ' + host_hdr + '\r\n'); client.write('\r\n'); }); }; var full_http_check = function(title, url) { var parts = url.match(/^http:\/\/([^\/]+)(.+)$/); // 1 // GET /path/to/resource.html HTTP/1.1 // Host: domain.name http_check(title, '01', parts[1], 'GET ' + parts[2] + ' HTTP/1.1', parts[1]); // 2 // GET http://domain.name/path/to/resource.html HTTP/1.1 // Host: domain.name http_check(title, '02', parts[1], 'GET http://' + parts[1] + parts[2] + ' HTTP/1.1', parts[1]); // 3 // GET /path/to/resource.html HTTP/1.0 http_check(title, '03', parts[1], 'GET ' + parts[2] + ' HTTP/1.0', ''); // 4 // GET /path/to/resource.html HTTP/1.0 // Host: domain.name http_check(title, '04', parts[1], 'GET ' + parts[2] + ' HTTP/1.0', parts[1]); // 5 // GET http://domain.name/path/to/resource.html HTTP/1.0 http_check(title, '05', parts[1], 'GET http://' + parts[1] + parts[2] + ' HTTP/1.0', ''); // 6 // GET http://domain.name/path/to/resource.html HTTP/1.0 // Host: domain.name http_check(title, '06', parts[1], 'GET http://' + parts[1] + parts[2] + ' HTTP/1.0', parts[1]); // 7 // GET http://domain.name/path/to/resource.html HTTP/1.1 // Host: void.domain.name http_check(title, '07', parts[1], 'GET http://' + parts[1] + parts[2] + ' HTTP/1.1', 'void.' + parts[1]); // 8 // GET http://domain.name/path/to/resource.html HTTP/1.1 // Host: local.fake http_check(title, '08', parts[1], 'GET http://' + parts[1] + parts[2] + ' HTTP/1.1', 'local.fake'); // 9 // GET http://domain.name/path/to/resource.html HTTP/1.1 // Host: l-IjFN=fiG(w+J2p:#.{92!m`d^? http_check(title, '09', parts[1], 'GET http://' + parts[1] + parts[2] + ' HTTP/1.1', 'l-IjFN=fiG(w+J2p:#.{92!m`d^?'); // 10 // GET http://fake.domain.name/path/to/resource.html HTTP/1.1 // Host: domain.name http_check(title, '10', parts[1], 'GET http://fake.' + parts[1] + parts[2] + ' HTTP/1.1', parts[1]); // 11 // GET http://local.fake/path/to/resource.html HTTP/1.1 // Host: domain.name http_check(title, '11', parts[1], 'GET http://local.fake' + parts[2] + ' HTTP/1.1', parts[1]); // 12 // GET http://l-IjFN=fiG(w+J2p:#.{92!m`d^?/path/to/resource.html HTTP/1.1 // Host: domain.name http_check(title, '12', parts[1], 'GET http://l-IjFN=fiG(w+J2p:#.{92!m`d^?' + parts[2] + ' HTTP/1.1', parts[1]); // 13 // GET http://local.fake/path/to/resource.html HTTP/1.1 // Host: void.domain.name http_check(title, '13', parts[1], 'GET http://local.fake' + parts[2] + ' HTTP/1.1', 'void.' + parts[1]); // 14 // GET habr://domain.name/path/to/resource.html HTTP/1.1 // Host: domain.name http_check(title, '14', parts[1], 'GET habr://' + parts[1] + parts[2] + ' HTTP/1.1', parts[1]); // 15 // GET habr://void.domain.name/path/to/resource.html HTTP/1.1 // Host: domain.name http_check(title, '15', parts[1], 'GET habr://void.' + parts[1] + parts[2] + ' HTTP/1.1', parts[1]); // 16 // GET habr://local.fake/path/to/resource.html HTTP/1.1 // Host: domain.name http_check(title, '16', parts[1], 'GET habr://local.fake' + parts[2] + ' HTTP/1.1', parts[1]); // 17 // GET habr://l-IjFN=fiG(w+J2p:#.{92!m`d^?/path/to/resource.html HTTP/1.1 // Host: domain.name http_check(title, '17', parts[1], 'GET habr://l-IjFN=fiG(w+J2p:#.{92!m`d^?' + parts[2] + ' HTTP/1.1', parts[1]); // 18 // GET habr://l-IjFN=fiG(w+J2p:#.{92!m`d^?/path/to/resource.html HTTP/1.1 // Host: local.fake http_check(title, '18', parts[1], 'GET habr://l-IjFN=fiG(w+J2p:#.{92!m`d^?' + parts[2] + ' HTTP/1.1', 'local.fake'); }; console.log(format_result(default_result(true))); /* http_check('IBM Fake', 'www.ibm.com', 'GET ttp://com/midmarket/ru/ru/ HTTP/1.1', 'ibm'); full_http_check('IBM', 'http://www.ibm.com/midmarket/ru/ru/'); */ full_http_check('', 'http://company.yandex.ru/about/main/'); full_http_check('JetBrains', 'http://www.jetbrains.com/products.html'); full_http_check('Box Overview', 'http://7del.net/texts/galaxy-note.html'); full_http_check('KolibriOS Project Team', 'http://kolibrios.org/en/download.htm'); full_http_check('Opera Software ASA', 'http://www.opera.com/about'); full_http_check('Apps4All', 'http://apps4all.ru/news/apple/apple-ios-7-beta.html'); full_http_check('', 'http://nordavind.ru/node/207'); full_http_check('Mail.Ru Group', 'http://corp.mail.ru/about/'); full_http_check('Microsoft', 'http://windows.microsoft.com/ru-RU/windows/home'); full_http_check('Zfort Group', 'http://www.zfort.com.ua/company/about/'); full_http_check('IBM', 'http://www.ibm.com/contact/ru/ru/'); full_http_check('UIDG', 'http://uidesign.ru/about/'); full_http_check('Intel', 'http://www.intel.ru/content/www/ru/ru/company-overview/company-overview.html'); full_http_check('Rusonyx', 'http://www.rusonyx.ru/company/reasons/'); full_http_check('', 'http://www.mosigra.ru/page/about/'); full_http_check('DevConf', 'http://devconf.ru/about/'); full_http_check('e-Legion Ltd.', 'http://www.e-legion.ru/contacts/'); full_http_check('Badoo', 'http://corp.badoo.com/company/'); full_http_check(' ()', 'http://mobile.beeline.ru/msk/setup/index.wbp'); 


рдЕрдм рдкреНрд░рддреНрдпреЗрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рдФрд░ рд╕рд╛рдЗрдЯреЛрдВ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкрд░ рдХрд░реАрдм рд╕реЗ рдирдЬрд╝рд░ рдбрд╛рд▓рддреЗ рд╣реИрдВред

рдЕрдиреБрд░реЛрдз 1


рдирд┐рд░рдкреЗрдХреНрд╖ рдкрде рдФрд░ рд╕рд╣реА рд╣реЛрд╕реНрдЯ рд╣реЗрдбрд░ рд╕рд╣рд┐рдд рд╕рдмрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп HTTP / 1.1 рдЕрдиреБрд░реЛрдз рд╡рд┐рдХрд▓реНрдкред рдХрд┐рд╕реА рднреА рд╕рд░реНрд╡рд░ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдЗрд╕рдХрд╛ рдЬрд╡рд╛рдм рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрд░реНрдерд╛рдд рд╣рдо "HTTP / 1.1 200 OK" рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред
  GET /path/to/resource.html HTTP / 1.1
 рд╣реЛрд╕реНрдЯ: domain.name 


рд╕рднреА рд╕рд░реНрд╡рд░ "HTTP / 1.1 200 рдареАрдХ рд╣реИред" рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд "рд╕рд░реНрд╡рд░" рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╣реЗрдбрд░ рдХреЗ рд▓рд┐рдП рдореВрд▓реНрдпреЛрдВ рдХреА рддрд╛рд▓рд┐рдХрд╛ рд╣реИ:
рдХрдВрдкрдиреАрд╕рд░реНрд╡рд░ рд╢реАрд░реНрд╖рдХ:
Apps4Allnginx / 1.0.15
badoonginx
рдмреЙрдХреНрд╕ рдЕрд╡рд▓реЛрдХрдиnginx / 1.2.1
DevConfnginx / 1.0.15
рдИ-рд▓реАрдЬрди рд▓рд┐рдорд┐рдЯреЗрдбnginx / 1.0.5
рдЖрдИрдмреАрдПрдоIBM_HTTP_Server
рдЗрдВрдЯреЗрд▓Microsoft-IIS / 7.5
рдЬреЗрдЯрдмреНрд░реЗрдиреНрд╕nginx
KolibriOS рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЯреАрдоlighttpd / 1.4.32
Mail.Ru Groupnginx / 1.2.5
рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯMicrosoft-IIS / 7.5
рдУрдкреЗрд░рд╛ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ ASAnginx
Rusonyxnginx
UIDGрдЕрдкрд╛рдЪреЗ
Zfort рд╕рдореВрд╣nginx / 1.4.1
рд╡рд┐рдореНрдкреЗрд▓рдХреЙрдо (рдмреАрд▓рд╛рдЗрди)Microsoft-IIS / 7.5
Mosigranginx / 1.4.1
Nordavindnginx / 1.0.4
Yandexnginx / 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 рдареАрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдирд╣реАрдВ рд╣реИред
рдХрдВрдкрдиреАрд╕рд░реНрд╡рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛
Apps4AllHTTP / 1.1 301 рд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдЪрд▓рд╛ рдЧрдпрд╛
badooHTTP / 1.1 302 рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдЪрд▓рд╛ рдЧрдпрд╛
рдмреЙрдХреНрд╕ рдЕрд╡рд▓реЛрдХрдиHTTP / 1.1 200 рдареАрдХ рд╣реИ
DevConfHTTP / 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 GroupHTTP / 1.1 200 рдареАрдХ рд╣реИ
рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯHTTP / 1.1 200 рдареАрдХ рд╣реИ
рдУрдкреЗрд░рд╛ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ ASAHTTP / 1.1 404 рдирд╣реАрдВ рдорд┐рд▓рд╛
RusonyxHTTP / 1.1 301 рд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдЪрд▓рд╛ рдЧрдпрд╛
UIDGHTTP / 1.1 404 рдирд╣реАрдВ рдорд┐рд▓рд╛
Zfort рд╕рдореВрд╣HTTP / 1.1 404 рдирд╣реАрдВ рдорд┐рд▓рд╛
рд╡рд┐рдореНрдкреЗрд▓рдХреЙрдо (рдмреАрд▓рд╛рдЗрди)HTTP / 1.1 302 рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ
MosigraHTTP / 1.1 404 рдирд╣реАрдВ рдорд┐рд▓рд╛
NordavindHTTP / 1.1 200 рдареАрдХ рд╣реИ
YandexHTTP / 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 рдиреЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдЬрд╡рд╛рдм рджрд┐рдпрд╛:

рдХрдВрдкрдиреАрд╕рд░реНрд╡рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╕рд░реНрд╡рд░ рд╢реАрд░реНрд╖рдХ:
Apps4AllHTTP / 1.1 200 рдареАрдХ рд╣реИnginx / 1.0.15
badooHTTP / 1.1 200 рдареАрдХ рд╣реИnginx
рдмреЙрдХреНрд╕ рдЕрд╡рд▓реЛрдХрдиHTTP / 1.1 200 рдареАрдХ рд╣реИnginx / 1.2.1
DevConfHTTP / 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 GroupHTTP / 1.1 200 рдареАрдХ рд╣реИnginx / 1.2.5
рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯHTTP / 1.1 200 рдареАрдХ рд╣реИMicrosoft-IIS / 7.5
рдУрдкреЗрд░рд╛ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ ASAHTTP / 1.1 200 рдареАрдХ рд╣реИnginx
RusonyxHTTP / 1.1 200 рдареАрдХ рд╣реИnginx
UIDGHTTP / 1.1 200 рдареАрдХ рд╣реИрдЕрдкрд╛рдЪреЗ
Zfort рд╕рдореВрд╣HTTP / 1.1 200 рдареАрдХ рд╣реИnginx / 1.4.1
рд╡рд┐рдореНрдкреЗрд▓рдХреЙрдо (рдмреАрд▓рд╛рдЗрди)HTTP / 1.1 200 рдареАрдХ рд╣реИMicrosoft-IIS / 7.5
MosigraHTTP / 1.1 200 рдареАрдХ рд╣реИnginx / 1.4.1
NordavindHTTP / 1.1 200 рдареАрдХ рд╣реИnginx / 1.0.4
YandexHTTP / 1.1 200 рдареАрдХ рд╣реИnginx / 1.2.1


рдЕрдиреБрд░реЛрдз резреж


рдЧрд▓рдд рдЕрдиреБрд░реЛрдзреЛрдВ рдореЗрдВ рд╕реЗ рдкрд╣рд▓рд╛ред рд╣рдо рд╕рд╣реА "рд╣реЛрд╕реНрдЯ:" рднреЗрдЬреЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдкреВрд░реЗ рдкрддреЗ рдореЗрдВ рд╣рдо рдПрдХ рдирдХреНрд╕рдЯреЗрдб рд╕рдмрдбреЛрдореЗрди рдЬреЛрдбрд╝ рджреЗрдВрдЧреЗред
  Http://fake.domain.name/path/to/resource.html HTTP / 1.1 рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ
 рд╣реЛрд╕реНрдЯ: domain.name 


рдЪреВрдВрдХрд┐ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдкреНрд░рд╢реНрди рд╢реБрд░реВ рд╣реБрдП, рдЗрд╕рд▓рд┐рдП рдкрд░рд┐рдгрд╛рдо рдбрд░рд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдХрдВрдкрдиреАрд╕рд░реНрд╡рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛
Apps4AllHTTP / 1.1 301 рд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдЪрд▓рд╛ рдЧрдпрд╛
badooHTTP / 1.1 301 рд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдЪрд▓рд╛ рдЧрдпрд╛
рдмреЙрдХреНрд╕ рдЕрд╡рд▓реЛрдХрдиHTTP / 1.1 200 рдареАрдХ рд╣реИ
DevConfHTTP / 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 GroupHTTP / 1.1 200 рдареАрдХ рд╣реИ
рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯHTTP / 1.1 200 рдареАрдХ рд╣реИ
рдУрдкреЗрд░рд╛ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ ASAHTTP / 1.1 404 рдирд╣реАрдВ рдорд┐рд▓рд╛
RusonyxHTTP / 1.1 301 рд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдЪрд▓рд╛ рдЧрдпрд╛
UIDGHTTP / 1.1 404 рдирд╣реАрдВ рдорд┐рд▓рд╛
Zfort рд╕рдореВрд╣HTTP / 1.1 404 рдирд╣реАрдВ рдорд┐рд▓рд╛
рд╡рд┐рдореНрдкреЗрд▓рдХреЙрдо (рдмреАрд▓рд╛рдЗрди)HTTP / 1.1 302 рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ
MosigraHTTP / 1.1 301 рд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдЪрд▓рд╛ рдЧрдпрд╛
NordavindHTTP / 1.1 200 рдареАрдХ рд╣реИ
YandexHTTP / 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 рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреА рд╣реИрдВ:

рдХрдВрдкрдиреАрд╕рд░реНрд╡рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛
Apps4AllHTTP / 1.1 200 рдареАрдХ рд╣реИ
badooHTTP / 1.1 200 рдареАрдХ рд╣реИ
рдмреЙрдХреНрд╕ рдЕрд╡рд▓реЛрдХрдиHTTP / 1.1 200 рдареАрдХ рд╣реИ
DevConfHTTP / 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 GroupHTTP / 1.1 200 рдареАрдХ рд╣реИ
рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯHTTP / 1.1 400 рдЦрд░рд╛рдм рдЕрдиреБрд░реЛрдз
рдУрдкреЗрд░рд╛ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ ASAHTTP / 1.1 400 BAD_REQUEST
RusonyxHTTP / 1.1 200 рдареАрдХ рд╣реИ
UIDGHTTP / 1.1 200 рдареАрдХ рд╣реИ
Zfort рд╕рдореВрд╣HTTP / 1.1 200 рдареАрдХ рд╣реИ
рд╡рд┐рдореНрдкреЗрд▓рдХреЙрдо (рдмреАрд▓рд╛рдЗрди)HTTP / 1.1 400 рдЦрд░рд╛рдм рдЕрдиреБрд░реЛрдз
MosigraHTTP / 1.1 400 BAD_REQUEST
NordavindHTTP / 1.1 200 рдареАрдХ рд╣реИ
YandexHTTP / 1.1 200 рдареАрдХ рд╣реИ


рдЕрдиреБрд░реЛрдз 15


рдЖрдЗрдП рдЕрдВрдд рдореЗрдВ рд╕рд░реНрд╡рд░ рдХреЗ рдкреНрд░рддрд┐рд░реЛрдз рдХреЛ рддреЛрдбрд╝рдиреЗ рдФрд░ рдкрд┐рдЫрд▓реЗ рдЕрдиреБрд░реЛрдз рднреЗрдЬрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдЧрд▓рдд рдЙрдкрдбреЛрдореЗрди рдХреЗ рд╕рд╛рдеред
  рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ: //void.domain.name/path/to/resource.html HTTP / 1.1
 рд╣реЛрд╕реНрдЯ: domain.name 


рдкрд░рд┐рдгрд╛рдо рджрд╕рд╡реАрдВ рдХреНрд╡реЗрд░реА рдХреЗ рд╕рдорд╛рди рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рднреА рдкрд░рд┐рд╡рд░реНрддрди рд╣реИрдВ:

рдХрдВрдкрдиреАрдЕрдиреБрд░реЛрдз резрежрдЕрдиреБрд░реЛрдз 15
Apps4AllHTTP / 1.1 301 рд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдЪрд▓рд╛ рдЧрдпрд╛HTTP / 1.1 301 рд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдЪрд▓рд╛ рдЧрдпрд╛
badooHTTP / 1.1 301 рд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдЪрд▓рд╛ рдЧрдпрд╛HTTP / 1.1 301 рд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдЪрд▓рд╛ рдЧрдпрд╛
рдмреЙрдХреНрд╕ рдЕрд╡рд▓реЛрдХрдиHTTP / 1.1 200 рдареАрдХ рд╣реИHTTP / 1.1 200 рдареАрдХ рд╣реИ
DevConfHTTP / 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 GroupHTTP / 1.1 200 рдареАрдХ рд╣реИHTTP / 1.1 200 рдареАрдХ рд╣реИ
рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯHTTP / 1.1 200 рдареАрдХ рд╣реИHTTP / 1.1 400 рдЦрд░рд╛рдм рдЕрдиреБрд░реЛрдз
рдУрдкреЗрд░рд╛ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ ASAHTTP / 1.1 404 рдирд╣реАрдВ рдорд┐рд▓рд╛HTTP / 1.1 400 BAD_REQUEST
RusonyxHTTP / 1.1 301 рд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдЪрд▓рд╛ рдЧрдпрд╛HTTP / 1.1 301 рд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдЪрд▓рд╛ рдЧрдпрд╛
UIDGHTTP / 1.1 404 рдирд╣реАрдВ рдорд┐рд▓рд╛HTTP / 1.1 404 рдирд╣реАрдВ рдорд┐рд▓рд╛
Zfort рд╕рдореВрд╣HTTP / 1.1 404 рдирд╣реАрдВ рдорд┐рд▓рд╛HTTP / 1.1 404 рдирд╣реАрдВ рдорд┐рд▓рд╛
рд╡рд┐рдореНрдкреЗрд▓рдХреЙрдо (рдмреАрд▓рд╛рдЗрди)HTTP / 1.1 302 рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯHTTP / 1.1 400 рдЦрд░рд╛рдм рдЕрдиреБрд░реЛрдз
MosigraHTTP / 1.1 301 рд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдЪрд▓рд╛ рдЧрдпрд╛HTTP / 1.1 400 BAD_REQUEST
NordavindHTTP / 1.1 200 рдареАрдХ рд╣реИHTTP / 1.1 200 рдареАрдХ рд╣реИ
YandexHTTP / 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 рд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдЪрд▓рд╛ рдЧрдпрд╛
рдУрдкреЗрд░рд╛ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ ASAHTTP / 1.1 200 рдареАрдХ рд╣реИHTTP / 1.1 400 BAD_REQUEST
MosigraHTTP / 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 рддреНрд░реБрдЯрд┐ рдХреА рд╕реВрдЪрдирд╛ рджреАред

Source: https://habr.com/ru/post/In183668/


All Articles