рдореЗрд░рд╛ .htaccess рд╡рд┐рдХрд▓реНрдк

рдкрд┐рдЫрд▓реЗ рд╡рд┐рд╖рдпрдЧрдд рдкреЛрд╕реНрдЯреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред Noobs рдХреЗ рд▓рд┐рдП .access, рдореИрдВ рдЕрд▓рдЧ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдФрд░ рдирд┐рд╖реЗрдз рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреА рдкреЗрд╢рдХрд╢ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рдареАрдХ рд╣реИ, рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдВрд░рдЪрдирд╛ рддрд░реНрдХ, рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рдХрд░реНрдо рд▓рд╛рд▓ рд░рдВрдЧ рдореЗрдВ рдерд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕реЗ рдЕрдм рдкреЛрд╕реНрдЯ рдХрд░рддрд╛ рд╣реВрдВред

рдЖрдкрдХреЗ рдзреНрдпрд╛рди рдХреЗ рд▓рд┐рдП, рдореИрдВ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдФрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдпреВрдЖрд░рдПрд▓ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдирд┐рдпрдореЛрдВ рдХреЛ рджреЗрдЦрддрд╛ рд╣реВрдВ "рдРрд╕рд╛ рдХреНрдпреЛрдВ?"

рддрд░реНрдХ рдкрд╣рд▓реЗ


рдореИрдВ рдкрд╣рд▓реЗ рддрд░реНрдХ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░реВрдВрдЧрд╛:
1) рд╕рднреА рдкреГрд╖реНрдареЛрдВ рдореЗрдВ .html рдЕрдВрдд рд╣реИред
2) рдкреГрд╖реНрдареЛрдВ рдХреЗ рд▓рд┐рдП рд╕рднреА рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП pagename.en.html рдпрд╛ pagename.html рдлрд╝реЙрд░реНрдо рд╣реЛрддрд╛ рд╣реИред рдмреЗрд╢рдХ, рдХрд┐рд╕реА рдХреЛ рднреА рдРрд╕реА рдХрдбрд╝рд┐рдпрд╛рдБ рд░рдЦрдиреЗ рд╕реЗ рдордирд╛ рдирд╣реАрдВ рдХрд░рддреА рдЬрд╣рд╛рдБ рднрд╛рд╖рд╛ рдкрд╣рд▓реЗ рдХреА рддрд░рд╣ / en /
3) рдбреЙрдХрд░реЙрдЯ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ "рдЗрдирдкреБрдЯ" рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИред
4) рдЕрдиреНрдп рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рдХреЗрд╡рд▓ рдбреЙрдХреНрд░реЛрдЯ рдореЗрдВ рдЕрдиреБрдорддрд┐ рд╣реИ
5) url рдореЗрдВ рдЕрдВрдд рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдкрд░ рд╕рдордЭреМрддрд╛:
# рд╕рд╛рдЗрдЯ.com/
# site.com/index -> site.com/
# site.com -> site.com/
# site.com/file/ -> site.com/file.html
# site.com/file -> site.com/file.html
# site.com/dir/file -> site.com/dir/file.html
# site.com/dir/file/ -> site.com/dir/file.html
рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред


ред рдЕрдзрд┐рдХрддрд╛ рд╕рдВрд░рдЪрдирд╛


рдЕрдм рд╣рдо рд╕реНрд╡рдпрдВ .htaccess рд╕рдВрд░рдЪрдирд╛ рдХреА рдУрд░ рдмрдврд╝рддреЗ рд╣реИрдВред рдореИрдВ рдпрд╣ рднреА рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рдЕрдкрд╛рдЪреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ 2.x рдФрд░ рдкреБрд░рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░реЗрдЧрд╛ред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдкреВрд░рд╛ рдХреЛрдб:
DirectoryIndex index index.html DirectorySlash off Options -Indexes -MultiViews # Rules # site.com/ # site.com/index -> site.com # site.com -> site.com/ # site.com/file/ -> site.com/file.html # site.com/file -> site.com/file.html # site.com/dir/file ->site.com/dir/file.html # site.com/dir/file/ -> site.com/dir/file.html # no ending slashes RewriteEngine On RewriteBase / RewriteCond %{REQUEST_URI} \.(css|jpg|gif|png|zip|rar|doc|xls|js|tif|tiff|docx|xlsx|ico)$|test\.php$ RewriteRule ^(.*)$ $1 [L,QSA] # nothing to do there in subrequests RewriteCond %{ENV:NS} !=1 RewriteCond %{IS_SUBREQ} =true RewriteRule (.*) $1 [L,QSA] #do NS=0? RewriteCond %{REQUEST_URI} ^/index$ [OR] RewriteCond %{REQUEST_URI} ^/index[.]+(\w+)$ RewriteRule . / [R=301,L] # remove trailing slashes # if want external redirect use correct external redir [R=301,L] or [R=301] for correct internal or simple redir [L] RewriteCond %{REQUEST_URI} !^/$ RewriteCond %{REQUEST_URI} (.*)/$ RewriteRule . %1.html [R=301,L,E=NS:1,QSA] # if whants .html endings RewriteCond %{REQUEST_URI} !^(.+)\.(html|php)$ RewriteRule . %{REQUEST_URI}.html [R=301,L] # fix multidots in endings (missed language) index..html instead of index.en.html RewriteCond %{REQUEST_URI} ^(.+)\.\.+(\w+)$ RewriteRule . %1.%2 [R=301,L] # otherways #RewriteCond %{REQUEST_URI} (.+)\.(html|php)$ # RewriteRule . %1 [R=301,L] # any php filename in root dir # this makes secure loses RewriteCond %{REQUEST_URI} ^[\w\-.]+$ RewriteCond %{REQUEST_FILENAME} (.*)\.(html|php)$ RewriteCond %1.php -s [OR] RewriteCond %1.html -s RewriteRule . %1.%2 [L,QSA] RewriteRule (.*) entry.php?URI=$1 [L,QSA] # 


рдбреАрдмреНрд░реАрдлрд┐рдВрдЧ


рдЕрдм, рд╣рдо рд▓рд╛рдЗрди рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд▓рд╛рдЗрди рджреНрд╡рд╛рд░рд╛ рдХрд░реЗрдВрдЧреЗред

 DirectoryIndex index index.html DirectorySlash off Options -Indexes -MultiViews 

рддреБрд░рдВрдд рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБ: рдЕрдВрдд рддрдХ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╕реНрд▓реИрд╢ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдорд▓реНрдЯреАрд╡реНрдпреВрдЬрд╝ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдпрд╣ рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛)ред

 RewriteEngine On RewriteBase / RewriteCond %{REQUEST_URI} \.(css|jpg|gif|png|zip|rar|doc|xls|js|tif|tiff|docx|xlsx|ico)$|test\.php$ RewriteRule ^(.*)$ $1 [L,QSA] 


рддреАрд╕рд░реА рдкрдВрдХреНрддрд┐ рд╕реНрдерд┐рд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХрд░рддреА рд╣реИ - рд╣рдо рдЙрдиреНрд╣реЗрдВ рдЕрдиреБрд░реЛрдз рдХреЛ рдмрджрд▓реЗ рдмрд┐рдирд╛ рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВред рд╢рд╛рдпрдж рдпрд╣ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдЪрд▓реЛ рдЗрд╕реЗ 404 рддрдВрддреНрд░ рдкрд░ рдЫреЛрдбрд╝ рджреЗрдВред рдЕрдВрддрд┐рдо |test\.php$ рд╡рд┐рднрд┐рдиреНрди рдкрд░реАрдХреНрд╖рдг рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ |test\.php$ , рд▓реЗрдХрд┐рди рдЗрд╕ рдЙрддреНрдкрд╛рджрди рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

 # nothing to do there in subrequests RewriteCond %{ENV:NS} !=1 RewriteCond %{IS_SUBREQ} =true RewriteRule (.*) $1 [L,QSA] #do NS=0? 

рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣рд┐рд╕реНрд╕рд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЪреВрдВрдХрд┐ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ (рдмрд╛рдж рдореЗрдВ рдХреЛрдб рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрджрд░реНрднрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ), рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣рдореЗрд╢рд╛ рдПрдХ рд╕рдмрдХреНрд╡реЗрд░реА рдореЗрдВ рдЬрд╛рдПрдЧреА рдФрд░ рдПрдХ рдЕрдирдВрдд рд▓реВрдк рдореЗрдВ рдЬрд╛ рд╕рдХрддреА рд╣реИред рдРрд╕рд╛ рд╣реЛрдиреЗ рд╕реЗ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЙрдкрд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдХреА рд╢реБрд░реБрдЖрдд рдХреЛ рдкрдХрдбрд╝рддреЗ рд╣реИрдВ рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рд╣реА "рдЗрдирдкреБрдЯ" рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП URL рдХреЛ рд╡рд░реНрддрдорд╛рди рдЕрдиреБрд░реЛрдз рднреЗрдЬрддреЗ рд╣реИрдВред рдпрд╣ рдЕрдкрд╛рдЪреЗ рдореЗрдВ rewrite_log рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдХреЗ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

 RewriteCond %{REQUEST_URI} ^/index$ [OR] RewriteCond %{REQUEST_URI} ^/index[.]+(\w+)$ RewriteRule . / [R=301,L] 

`/ 'рд╕реВрдЪрдХрд╛рдВрдХ' рдпрд╛ 'index.html' рдкрд░ рдЬрд╛рдиреЗ рдХреЗ рд╕рднреА рдкреНрд░рдпрд╛рд╕ URL` / 'рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗред

 # remove trailing slashes # if want external redirect use correct external redir [R=301,L] or [R=301] for correct internal or simple redir [L] RewriteCond %{REQUEST_URI} !^/$ RewriteCond %{REQUEST_URI} (.*)/$ RewriteRule . %1.html [R=301,L,E=NS:1,QSA] 

"рд╕рдордЭреМрддреЗ" рдХреЗ рдХреБрдЫ рд╣рд┐рд╕реНрд╕реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ: рдкреГрд╖реНрда рдХреЙрд▓ рд╕реЗ рдЕрдиреБрдЧрд╛рдореА `/ 'рдХреЛ рд╣рдЯрд╛рддрд╛ рд╣реИред рдирд┐рдпрдореЛрдВ рдХреЛ рд╢реБрд░реБрдЖрдд рдореЗрдВ рдкреИрд░рд╛рдЧреНрд░рд╛рдл (5) рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЯрд┐рдкреНрдкрдгреА рдХрд╣рддреА рд╣реИ рдХрд┐ рдЕрдЧрд░ рд╣рдо рдХрд┐рд╕реА рдмрд╛рд╣рд░реА рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ (рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд▓рд╛рдЗрди рдореЗрдВ рдпреВрдЖрд░рдПрд▓ рдХреЛ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо [R=301,L] , рдпрджрд┐ рдЖрдВрддрд░рд┐рдХ (рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд▓рд╛рдЗрди рдореЗрдВ url рдХреЛ рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИ), рддреЛ [R=301] рдпрд╛ [L]

 # if whants .html endings RewriteCond %{REQUEST_URI} !^(.+)\.(html|php)$ RewriteRule . %{REQUEST_URI}.html [R=301,L] 

"рд╕рдордЭреМрддреЗ" рдХрд╛ рдПрдХ рдФрд░ рд╣рд┐рд╕реНрд╕рд╛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╕рднреА рдкреГрд╖реНрда рдЕрдиреБрд░реЛрдзреЛрдВ рдореЗрдВ рдПрдХред Html рд╕рдорд╛рдкреНрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЫреЛрдЯреЗ рдЬреЛрдбрд╝рддреЛрдбрд╝ рджреВрд╕рд░реЗ рддрд░реАрдХреЗ рд╕реЗ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред

 # fix multidots in endings (missed language) index..html instead of index.en.html RewriteCond %{REQUEST_URI} ^(.+)\.\.+(\w+)$ RewriteRule . %1.%2 [R=301,L] 

рдбрд┐рдлрд╝реЙрд▓реНрдЯ рднрд╛рд╖рд╛ рдХреЗ рд╕рд╛рде рдкреГрд╖реНрда рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░рдХреЗ рдХреНрд╡реЗрд░реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдПрдХ рд▓рд╛рдкрддрд╛ рднрд╛рд╖рд╛ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИред

 # any php filename in root dir # this makes secure loses RewriteCond %{REQUEST_URI} ^[\w\-.]+$ RewriteCond %{REQUEST_FILENAME} (.*)\.(html|php)$ RewriteCond %1.php -s [OR] RewriteCond %1.html -s RewriteRule . %1.%2 [L,QSA] 

рд╕рдордЭреМрддреЗ рдирдВрдмрд░ 4 рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ - рд╕рд╛рдЗрдЯ рдХреЗ% DOCUMENT_ROOT% рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЕрдиреНрдп php / html рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИред

 RewriteRule (.*) entry.php?URI=$1 [L,QSA] 

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

рдЕрдиреЗрдХ рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рд╕рдВрдЧреНрд░рд╣


рдЕрдкрд╛рдЪреЗ рдЭрдВрдбреЗ рдХреЗ рд▓рд┐рдП рдХреЗ рд░реВрдк рдореЗрдВ: QSA рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рд░ рдЬрдЧрд╣ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдХреНрд╡реЗрд░реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдкреВрд░рдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП) - рдЖрдкрдХреЛ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рднреВрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП рддрд╛рдХрд┐ рдкреИрд░рд╛рдореАрдЯрд░ рдЦреЛрдирд╛ рди рд╣реЛред E=NS:1 рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ NS рдХреЛ 1 рдХреЗ рдмрд░рд╛рдмрд░ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ - рдпрд╣ рд╕рдмрдХреНрд╡реЗрд░реА ("рд╕рдордЭреМрддреЗ" рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рд╡рд░реНрддрди рдирд┐рдпрдореЛрдВ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдИ рдЧрдИ рдЙрдкрд╢реНрд░реЗрдгреА рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рди рдХрд┐ рдХреБрдЫ рдЕрдиреНрдп рдЙрдкрд╢реНрд░реЗрдгреА рдХреЛ)ред

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


All Articles