KISS рд╕рд┐рджреНрдзрд╛рдВрдд рдФрд░ mod_rewrite рдирд┐рд░реНрджреЗрд╢реЛрдВ

рд╡реЗрдм-рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХрд┐рдпреЛрдВ рдФрд░ рдЙрдирдореЗрдВ рдЙрдирдХреА рднрд╛рдЧреАрджрд╛рд░реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реНрдерд╛рдпреА рдХрдард┐рди рд╡рд┐рдЪрд╛рд░реЛрдВ рдореЗрдВ рд░рд╣рдХрд░, рдореИрдВрдиреЗ рдПрдХ рд╕рд░рд▓ рд╡рд┐рдЪрд╛рд░ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред

рдерд╛: рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд KISS рдЙрдкрдпреЛрдЧ рдореЗрдВ рд╣реИ рдмреБрд░рд╛ рд╣реИ, рдФрд░ рдпрд╣ рд╣реИ - рдмреБрд░рд╛!

UPD 1: рдЕрдлреНрд░рд╛рдЗрдЯрд░ рдПрдХ рд╕рд╛рдЗрдХрд┐рд▓ рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдХреНрдпрд╛ рд╣рдо рдЙрд╕рдХреА рдорджрдж рдХрд░реЗрдВрдЧреЗ? :)
UPD 2: рд▓реЗрдЦрдХ рдЕрдм рдорджрдж рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ ... :)

рдпрд╣ рдерд╛: рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдмреЗрддреБрдХрд╛ рдирд┐рд╖реНрдХрд░реНрд╖ рдХрдИ рдЕрд▓реНрдЯреНрд░рд╛-рд▓реЛрдХрдкреНрд░рд┐рдп рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП .htaccess рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред

UPD 3: рд▓реЗрдЦрдХ рдРрд╕реА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд╕рднреА рдкреНрд░рд╢рдВрд╕рдХреЛрдВ рд╕реЗ рдорд╛рдлреА рдорд╛рдВрдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА "рдХреНрдпрд╛ рдЖрд╕рд╛рди рд╣реИ" рд╕рдордЭрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдЦрдХ рдЗрд╕ рдмрд╛рдд рд╕реЗ рдЗрдирдХрд╛рд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╡рд╣ "рдЕрднреА рднреА рдЕрдзреНрдпрдпрди рдХрд░ рд░рд╣рд╛ рд╣реИ" ... :)



рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛? ::
рдкрд┐рдЫрд▓реЗ рдХреБрдЫ рдорд╣реАрдиреЛрдВ рдореЗрдВ, рдореБрдЭреЗ рдирд┐рдореНрди рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреА .htaccess рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ "рдмреЙрдХреНрд╕рд┐рдВрдЧ" mod_rewrite рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде рдЦреБрдж рдХреЛ рдкрд░рд┐рдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:



рдмрд╕ рдпрд╣ рдордд рд╕реЛрдЪреЛ рдХрд┐ рдореИрдВ рдЙрдирдХреЗ рдЬреИрд╕рд╛ рдирд╣реАрдВ рд╣реВрдБ, рдмрд╕ рд╡рд┐рдкрд░реАрдд! рд╡реЗ рдЕрдЪреНрдЫреЗ рд╣реИрдВ, рд╕рднреА "рдЕрдкрдиреЗ" рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рддрд░реАрдХреЗ рд╕реЗ рдЕрдЪреНрдЫреЗ рд╣реИрдВ! рдФрд░, рд╣рд╛рдБ, рдореИрдВрдиреЗ "рджреЗрдЦрд╛" / "рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛" рдЙрди рд╕рднреА рдХреЛ рдПрдХ рддрд░рд╣ рд╕реЗ рдпрд╛ рдХрд┐рд╕реА рдФрд░ рддрд░рд╣ рд╕реЗ!

рд╡рд╣ рд╕рд┐рджреНрдзрд╛рдВрдд рдЬрд┐рд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХреА рдЬрд╛рддреА рд╣реИрдВ, рдирд┐рдореНрди рддрд░реНрдХ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИ:

рдпрджрд┐ рдХреЛрдИ рдлрд╝рд╛рдЗрд▓ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЗрдВрдЬрди рдкрд░ рдЬрд╛рдПрдВ ред

рдЕрд░реНрдерд╛рддреН, рд╕рд╛рдорд╛рдиреНрдп рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдХреБрдЫ рдЗрд╕ рддрд░рд╣:

	 <IfModule mod_rewrite.c>
		 % ReriteCond% {REQUEST_FILENAME}! -F
		 % ReriteCond% {REQUEST_FILENAME}! -D
		 RewriteRule ^ <u> index.php </ u> [L]
	 </ IfModule>


рдЗрд╕ рд╕рд┐рджреНрдзрд╛рдВрдд рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рд░реВрдк рд╕реЗ рдХреНрдпреЛрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдЬрд╡рд╛рдм рдирд╣реАрдВ рджреЗ рд╕рдХрд╛ред

рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдПрдХ рдмрд╛рд░, рдХрд┐рд╕реА рдиреЗ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ рдпрд╣ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред
рддрдм рд╕реЗ, рдХреЛрдИ рднреА рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд╣реАрдВ рд╕реЛрдЪрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЖрдЦрд┐рд░рдХрд╛рд░, рдХреНрдпреЛрдВ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ?
рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рд▓реЗрдХрд┐рди ...

рд╣рдореЗрдВ рдЗрд╕ рд╕рд┐рджреНрдзрд╛рдВрдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпрд╛ рджреЗрддрд╛ рд╣реИ:
  1. рдЗрдВрдЬрди URL рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд░рд┐рдХреЙрд░реНрдб рдХреА рддрд▓рд╛рд╢ рдХрд░рддрд╛ рд╣реИред
  2. рдпрджрд┐ рдХреЛрдИ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдирд╣реАрдВ рд╣реИ, рддреЛ 404 рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
  3. рдпрджрд┐ рд╡рд░реНрддрдорд╛рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рддрдХ рдкрд╣реБрдВрдЪ "рдЕрд╕реНрд╡реАрдХреГрдд" рд╣реИ - 403ред
  4. рд╕рд╛рдорд╛рдиреНрдп рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рд╣рдо рдорд╛рдирдХ 404 рд╕рд░реНрд╡рд░ рддреНрд░реБрдЯрд┐ "рдЖрдЙрдЯрдкреБрдЯ" рдХрд░рдиреЗ рдХреЗ рдЕрд╡рд╕рд░ рд╕реЗ рд╡рдВрдЪрд┐рдд рд╣реИрдВред
  5. рдХрднреА-рдХрднреА, рдЙрди рдкреГрд╖реНрдареЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ "рд╣рдо рд╣реИрдВ" рд╣рдореЗрдВ рдЗрдВрдЬрди рдФрд░ рдЯреЗрдореНрдкрд▓реЗрдЯ рдЗрдВрдЬрди, "рдкреБрд▓ рдЕрдк" рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдореЗрдВ рдЖрд╡реЗрд╖рдг рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЖрдк рдЙрдиреНрд╣реЗрдВ рдЗрдВрдЬрди рд╕реЗ рдЬреЛрдбрд╝рдХрд░ рдЗрд╕рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдпрджрд┐ рд╡реЗ рд╡рд╣рд╛рдВ рдирд╣реАрдВ рд╣реИрдВред


рд╡реИрд╕реЗ, рдЕрдорд┐рд░рд╛рдЙрдореНрд╕ рдФрд░ рдХрдИ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдореЗрдВ, рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ "рдкреБрд░рд╛рддрди" рдЖрдорддреМрд░ рдкрд░ 404 рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣ "рдЬрд╝реА рдмреЗрд╕реНрдЯ" рд╣реИ! рд╣рд╛рд▓рд╛рдВрдХрд┐ рдкреНрд░рдгрд╛рд▓реА (рдЗрд╕реЗ рд╡рд┐рдЬреНрдЮрд╛рдкрди рдирд╣реАрдВ рдорд╛рдирддреЗ рд╣реИрдВ) рдЖрдорддреМрд░ рдкрд░ рдЦрд░рд╛рдм рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ (рдареАрдХ рд╣реИ, рдореБрдЭреЗ рдХреБрдЫ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдХрд╣рдирд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдХреБрдЫ рдирдХрд╛рд░рд╛рддреНрдордХ рдХрд╣рд╛ рд╣реИ)ред

рдФрд░, рдпрд╣рд╛рдБ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕рд╡рд╛рд▓ рдпрд╣ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ, рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ?

рдПрдХ рджрд░реНрдЬрди рдкреГрд╖реНрдареЛрдВ рдХреЗ рд╕рд╛рде рд╕реНрд╡-рд▓рд┐рдЦрд┐рдд (рд╕реНрдХреНрд░реИрдЪ рд╕реЗ) рд╡реНрдпрд╡рд╕рд╛рдп рдХрд╛рд░реНрдб рд╕рд╛рдЗрдЯреЛрдВ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЕрдм рдЗрд╕ рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реВрдВ:
	 <IfModule mod_rewrite.c>

		 рд░реЗрд╡реЗрд░рд┐рдЯреЗрдВрдЧрд┐рди рдкрд░

		 % ReriteCond% {REQUEST_FILENAME} -s
		 % ReriteCond% {REQUEST_FILENAME}! -L
		 % ReriteCond% {REQUEST_FILENAME}! -D
		 RewriteRule ^ (ред *) $ ../Index.php?fn=% рдкреЗрдЧреНрд░реЗрдХреНрд╡реЗрд╕реНрдЯ_рдлрд┐рд▓рдиреЗрдо} [рдПрдирдПрд╕, рдПрдирд╕реА, рдПрд▓]

	 </ IfModule>


рдпрд╣ рдореБрдЭреЗ рдХреНрдпрд╛ рджреЗрддрд╛ рд╣реИ:

  1. "рд╕реНрдЯреЗрдЯрд┐рдХреНрд╕" рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рддрднреА рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ рдЬрдм рдпрд╣ рд╣реЛрддрд╛ рд╣реИред
  2. рдпрджрд┐ рдХреЛрдИ рд╕реНрдереИрддрд┐рдХ рдирд╣реАрдВ рд╣реИ, рддреЛ рдРрд╕рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд╣рдо 404 "рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ" рджреЗрддреЗ рд╣реИрдВред
  3. рд╕реНрдерд┐рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ "рдмрд╛рдЗрдВрдб" рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдЗрдВрдЬрди рдореЗрдВ рд╣реА рд╣реИ, рддреБрд░рдВрддред


рдореЗрд░реА "рд╕реНрдЯреЗрдЯрд┐рдХреНрд╕" рдХреНрдпрд╛ рд╣реИ?

рдкрд╛рда рдлрд╝рд╛рдЗрд▓реЗрдВ, рдЖрдо рдкрд╛рда рдлрд╝рд╛рдЗрд▓реЗрдВ ...
рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ TITLE рд╣реИред
рджреВрд╕рд░реА рдкрдВрдХреНрддрд┐ HEAD INCLUDE рд╣реИ: рд╕рднреА рдХреЛ рдореБрдЭреЗ рд╕рд┐рд░ рдХреЗ рдЕрдВрдд рддрдХ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рддреАрд╕рд░реА рдкрдВрдХреНрддрд┐ рдХреЗ рдиреАрдЪреЗ рд╕рдм рдХреБрдЫ рдкреГрд╖реНрда рдХрд╛ рдореБрдЦреНрдп рднрд╛рдЧ рд╣реИ ...

рдЯреЗрдореНрдкреНрд▓реЗрдЯ рд╕рд╛рдорд╛рдиреНрдп рд╣реИ, рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдирд┐рдпрдорд┐рдд рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреЛ рд╕реНрдЯреЗрдЯрд┐рдХреНрд╕ рд╕реЗ I "рдЗрди рддреАрди" рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ "рдЪреБрдирдиреЗ" рдХреЗ рдмрд╛рдж рдЗрдВрдЬрди рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред рдореИрдВ рдЬрд┐рддрдиреЗ рдЪрд╛рд╣реЗрдВ рдЙрддрдиреЗ рдЪрд░ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реВрдВ, рдореИрдВ рдЙрдиреНрд╣реЗрдВ "рд╡рд┐рд╢реЗрд╖ рд╡рд░реНрдгреЛрдВ рдХреЗ рд╡рд┐рд╢реЗрд╖ рдЕрдиреБрдХреНрд░рдо" рдХреЗ рд╕рд╛рде рдЕрд▓рдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рддрд╛рдХрд┐ "рд╕рдм рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рд╣реЛ"ред

рдХреНрдпрд╛ рдпрд╣ рддреЗрдЬреА рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ?
рдореИрдВрдиреЗ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди, IMHO - рдзреАрдорд╛ рдирд╣реАрдВред

рдбреЗрдЯрд╛рдмреЗрд╕ рдбреЗрдЯрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛?

рддреЛ, рдФрд░ рдЬреЛ рдкреНрд░рддреНрдпреЗрдХ "рдирд┐рдпрдВрддреНрд░рдХ" рдХреЗ рд▓рд┐рдП рдПрдХ рдкреГрд╖реНрда рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд░реЛрдХрддрд╛ рд╣реИ, рдпрд╛ рдкреГрд╖реНрда рдХреЗ рд╢рд░реАрд░ рдореЗрдВ "рдирд┐рдпрдВрддреНрд░рдХ" рдмрдирд╛рдиреЗ рдФрд░ рдЗрд╕реЗ "рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░" рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИред

рд╕реБрд░рдХреНрд╖рд╛?

PHP рдореЗрдВ, рдореИрдВ рдПрдХ рдирд┐рдпреЛрдлрд╛рдЗрдЯ рд╣реВрдВ, "рдЗрдВрдЬрди" рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдЪреЗрдХ рдХреЛ рдПрдореНрдмреЗрдбреЗрдб рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рд╕рд╣реА рдПрдХреНрд╕реЗрд╕ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде рдЗрд╕рдХреА рдмрд┐рд▓реНрдХреБрд▓ рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

 <? php
 рдЕрдЧрд░ (isset ($ _ GET ["fn"])) {
	 рдЕрдЧрд░ (рд╕реНрдЯреНрд░рд┐рдВрдЧ ($ _ SERVER ["REQUEST_URI"], $ _SERVER ["SCRIPT_NAME"]) === рдЕрд╕рддреНрдп) {
		 $ fn = $ _GET ["fn"];
		 рдЕрдЧрд░ (file_exists ($ fn) === рд╕рдЪ) {
			 $ рдкреНрд░рддреНрдпрдХреНрд╖ = 'рдп';
			 requirement_once ('core.php');
		 } {
			 $ рдкреНрд░рдХрд╛рд░ = 404;
			 рдЖрд╡рд╢реНрдпрдХрддрд╛_рдСрдирд╕ ('error_report.php');
		 }
		 requirement_once ('core.php');
	 } {
		 рдЖрд╡рд╢реНрдпрдХрддрд╛_рдСрдирд╕ ('error_report.php');
	 }
 } {
	 рдЖрд╡рд╢реНрдпрдХрддрд╛_рдСрдирд╕ ('error_report.php');
 }
 ?>



рдореИрдВ рдЗрд╕рдХреА рдЧрд┐рд░рд╛рд╡рдЯ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рд╕реБрдирдХрд░ рдкреНрд░рд╕рдиреНрди рд╣реВрдВред

рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

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


All Articles