mod_rewrite සින්ටැක්ස් අනුපිළිවෙල
mod_rewrite සැකසීමට බලපාන නිශ්චිත ඇණවුම් නීති ඇත. ඕනෑම දෙයක් සිදු කිරීමට පෙර, RewriteEngine On
මෙය mod_rewrite සැකසුම් සක්රීය කරන බැවින් විධානය ලබා දිය යුතුය. මෙය වෙනත් නැවත ලිවීමේ නියෝගයන්ට පෙර විය යුතුය.
RewriteCond
පූර්වයෙන් RewriteRule
එම එක් රීතියක් කොන්දේසිවලට යටත් වේ. පහත දැක්වෙන ඕනෑම නැවත ලිවීමේ රීති කොන්දේසි වලට යටත් නොවූ ලෙස සකසනු ලැබේ.
RewriteEngine On
RewriteCond %{HTTP_REFERER} ^https?://serverfault\.com(/|$)
RewriteRule $/blog/(.*)\.html $/blog/$1.sf.html
මෙම සරල අවස්ථාවෙහිදී, HTTP යොමු කිරීම serverfault.com වෙතින් නම්, බ්ලොග් ඉල්ලීම් විශේෂ සේවාදායක පිටු වෙත හරවා යවන්න (අපි එය විශේෂයි). කෙසේ වෙතත්, ඉහත බ්ලොක් එකට අමතර නැවත ලිවීමේ රේඛාවක් තිබේ නම්:
RewriteEngine On
RewriteCond %{HTTP_REFERER} ^https?://serverfault\.com(/|$)
RewriteRule $/blog/(.*)\.html $/blog/$1.sf.html
RewriteRule $/blog/(.*)\.jpg $/blog/$1.sf.jpg
සියලුම .jpg ලිපිගොනු විශේෂ සේවාදායක දෝෂ පිටු වෙත යනු ඇත, එය යොමු කරන්නෙකු සහිත ලිපිගොනු පමණක් නොවේ. මෙය පැහැදිලිවම මෙම නීති ලියා ඇති ආකාරයෙහි අභිප්රාය නොවේ. එය නැවත ලිවීමේ නීති කිහිපයක් සමඟ කළ හැකිය:
RewriteEngine On
RewriteCond %{HTTP_REFERER} ^https?://serverfault\.com(/|$)
RewriteRule ^/blog/(.*)\.html /blog/$1.sf.html
RewriteCond %{HTTP_REFERER} ^https?://serverfault\.com(/|$)
RewriteRule ^/blog/(.*)\.jpg /blog/$1.sf.jpg
නමුත් බොහෝ විට සිදු කළ යුත්තේ උපක්රමශීලී ආදේශන සින්ටැක්ස් ය.
RewriteEngine On
RewriteCond %{HTTP_REFERER} ^https?://serverfault\.com(/|$)
RewriteRule ^/blog/(.*)\.(html|jpg) /blog/$1.sf.$2
වඩාත් සංකීර්ණ RewriteRule සැකසීම සඳහා කොන්දේසි අඩංගු වේ. අන්තිම (html|jpg)
වර්ගාත්මක , RewriteRule ට කියන්නේ එකකට html
හෝ ගැලපෙන ලෙසටය jpg
, සහ නැවත ලිවූ නූලෙහි ගැලපෙන නූල් $ 2 ලෙස නිරූපණය කරන්න. මෙය පෙර බ්ලොක් එකට තාර්කිකව සමාන වන අතර RewriteCond / RewriteRule යුගල දෙකක් ඇත, එය එය හතරක් වෙනුවට පේළි දෙකකින් කරයි.
බහුවිධ නැවත ලිවීමේ රේඛා ව්යංගයෙන් ANDed කර ඇති අතර ඒවා පැහැදිලිවම ORed කළ හැකිය. සර්වර්ෆෝල්ට් සහ සුපර් පරිශීලක (පැහැදිලි හෝ) යන දෙකින්ම යොමු කරන්නන් හැසිරවීමට:
RewriteEngine On
RewriteCond %{HTTP_REFERER} ^https?://serverfault\.com(/|$) [OR]
RewriteCond %{HTTP_REFERER} ^https?://superuser\.com(/|$)
RewriteRule ^/blog/(.*)\.(html|jpg) /blog/$1.sf.$2
ක්රෝම් බ්රව්සර් සමඟ සර්වර්ෆෝල්ට් යොමු කළ පිටු සේවය කිරීම සඳහා (ව්යංගයෙන් සහ):
RewriteEngine On
RewriteCond %{HTTP_REFERER} ^https?://serverfault\.com(/|$)
RewriteCond %{HTTP_USER_AGENT} ^Mozilla.*Chrome.*$
RewriteRule ^/blog/(.*)\.(html|jpg) /blog/$1.sf.$2
RewriteBase
පහත දැක්වෙන RewriteRule
විධානයන් ඒවායේ සැකසුම් හැසිරවිය යුතු ආකාරය නියම කරන බැවින් ඇණවුම විශේෂිත වේ. .Htaccess ගොනු වල එය ඉතා ප්රයෝජනවත් වේ. භාවිතා කරන්නේ නම්, එය .htaccess ගොනුවක "RewriteEngine on" යටතේ ඇති පළමු නියෝගය විය යුතුය. මෙම උදාහරණය ගන්න:
RewriteEngine On
RewriteBase /blog
RewriteCond %{HTTP_REFERER} ^https?://serverfault\.com(/|$)
RewriteRule ^(.*)\.(html|jpg) $1.sf.$2
මෙය mod_rewrite ට කියනුයේ එය දැනට හසුරුවන මෙම විශේෂිත URL ය පැමිණියේ භෞතික නාමාවලි මාර්ගය (/ home / $ පරිශීලක නාමය / public_html / blog) වෙනුවට http://example.com/blog/ හරහා වන අතර ඒ අනුව ප්රතිකාර කිරීම. මේ හේතුව නිසා, RewriteRule
එය URL හි "/ බ්ලොග්" වලින් පසුව ආරම්භ වන බව සලකයි. මෙන්න එකම දෙය වෙනස් ආකාර දෙකකින් ලියා ඇත. එකක් RewriteBase සමඟ, අනෙක නොමැතිව:
RewriteEngine On
##Example 1: No RewriteBase##
RewriteCond %{HTTP_REFERER} ^https?://serverfault\.com(/|$)
RewriteRule /home/assdr/public_html/blog/(.*)\.(html|jpg) $1.sf.$2
##Example 2: With RewriteBase##
RewriteBase /blog
RewriteCond %{HTTP_REFERER} ^https?://serverfault\.com(/|$)
RewriteRule ^(.*)\.(html|jpg) $1.sf.$2
ඔබට පෙනෙන පරිදි, වෙබ් සේවාදායකයට වඩා RewriteBase
වෙබ් අඩවි මාර්ගය අන්තර්ගතයට යොමු කිරීමට රීති නැවත ලිවීමට ඉඩ සලසයි , එමඟින් එවැනි ලිපිගොනු සංස්කරණය කරන අයට ඒවා වඩාත් බුද්ධිමත් කළ හැකිය. එසේම, සෞන්දර්යාත්මක ආකර්ෂණයක් ඇති විධානයන් කෙටි කළ හැකිය.
RewriteRule ගැලපෙන සින්ටැක්ස්
RewriteRule හි නූල් ගැලපීම සඳහා සංකීර්ණ වාක්ය ඛණ්ඩයක් ඇත. මම කොඩි ([PT] වැනි) වෙනත් කොටසක ආවරණය කරමි. මිනිස් පිටුවක් කියවීමට වඩා බොහෝ විට සිසැඩ්මින්වරු ආදර්ශයෙන් ඉගෙන ගන්නා නිසා මම උදාහරණ ලබා දී ඔවුන් කරන දේ පැහැදිලි කරමි.
RewriteRule ^/blog/(.*)$ /newblog/$1
මෙම .*
ඉදිකිරීමක් ඕනෑම තනි චරිතය (තරග .
) ශුන්ය හෝ ඊට වැඩි වතාවක් ( *
). වරහන් තුළ එය ඇතුළත් කිරීමෙන් එය $ 1 විචල්යය ලෙස ගැලපෙන නූල් සැපයීමට පවසයි.
RewriteRule ^/blog/.*/(.*)$ /newblog/$1
මෙම අවස්ථාවෙහිදී, පළමුවැන්න * පේරන් වල කොටා නොතිබූ බැවින් නැවත ලියන ලද නූලට ලබා නොදේ. මෙම රීතිය නව බ්ලොග් අඩවියේ නාමාවලි මට්ටමක් ඉවත් කරයි. (/blog/2009/sample.html /newblog/sample.html බවට පත්වේ).
RewriteRule ^/blog/(2008|2009)/(.*)$ /newblog/$2
මෙම අවස්ථාවේ දී, පළමු වරහන් ප්රකාශනය ගැලපෙන කණ්ඩායමක් සකසයි. මෙය $ 1 බවට පත්වන අතර එය අවශ්ය නොවන අතර නැවත ලියන ලද නූලෙහි භාවිතා නොවේ.
RewriteRule ^/blog/(2008|2009)/(.*)$ /newblog/$1/$2
මෙම අවස්ථාවේ දී, අපි නැවත ලියන ලද නූලෙහි $ 1 භාවිතා කරමු.
RewriteRule ^/blog/(20[0-9][0-9])/(.*)$ /newblog/$1/$2
මෙම රීතිය අක්ෂර පරාසයක් නියම කරන විශේෂ වරහන් සින්ටැක්ස් භාවිතා කරයි . [0-9] 0 සිට 9 දක්වා ඉලක්කම් වලට ගැලපේ. මෙම නිශ්චිත රීතිය 2000 සිට 2099 දක්වා කාලය පාලනය කරයි.
RewriteRule ^/blog/(20[0-9]{2})/(.*)$ /newblog/$1/$2
මෙය පෙර රීතියට සමාන දෙයක් කරයි, නමුත් {2} කොටස එය පෙර අක්ෂරයට (මෙම අවස්ථාවේ වරහන් ප්රකාශනය) දෙවරක් ගැලපෙන ලෙස පවසයි.
RewriteRule ^/blog/([0-9]{4})/([a-z]*)\.html /newblog/$1/$2.shtml
මෙම නඩුව දෙවන ගැලපෙන ප්රකාශනයේ ඕනෑම කුඩා අකුරකට අනුරූප වන අතර හැකි තරම් අක්ෂර සඳහා එසේ කරන්න. මෙම \.
ඉදිකිරීමක් නොවන සැබෑ කාලය, එය පෙර උදාහරණ වේ විශේෂ චරිතයක් ලෙස කාලය සඳහා ප්රතිකාර කිරීමට පවසනවා. ගොනුවේ නමෙහි ඉරක් තිබේ නම් එය බිඳී යනු ඇත.
RewriteRule ^/blog/([0-9]{4})/([-a-z]*)\.html /newblog/$1/$2.shtml
මෙමඟින් ගොනු නාමයන් ඉර සහිත ඉරක් සමඟ කොටු වේ. කෙසේ වෙතත්, -
වරහන් ප්රකාශනවල විශේෂ චරිතයක් මෙන්, එය ප්රකාශනයේ පළමු චරිතය විය යුතුය.
RewriteRule ^/blog/([0-9]{4})/([-0-9a-zA-Z]*)\.html /newblog/$1/$2.shtml
මෙම අනුවාදය ඕනෑම ගොනු නාමයක් අකුරු, අංක හෝ ලිපිගොනු නාමයෙන් උගුලට හසු -
කරයි. වරහන් ප්රකාශනයක ඔබ බහු අක්ෂර කට්ටල නියම කරන්නේ මේ ආකාරයට ය.
ධජ නැවත ලියන්න
නැවත ලිවීමේ නීති වල ධජ වලට විශේෂ අර්ථයන් සහ භාවිත කේත රාශියක් ඇත.
RewriteRule ^/blog/([0-9]{4})/([-a-z]*).\html /newblog/$1/$2.shtml [L]
ධජය යනු [L]
ඉහත ප්රකාශනයේ අවසානයේ ය. කොමා මඟින් වෙන් කරන ලද බහු ධජ භාවිතා කළ හැකිය. සම්බන්ධිත ලියකියවිලි එක් එක් විස්තර කරයි, නමුත් මෙන්න ඒවා කෙසේ හෝ වේ:
එල් = අන්තිම. මෙය ගැලපෙන විට නැවත ලිවීමේ රීති සැකසීම නවත්වන්න. ඇණවුම් ගණන්!
සී = දාමය. ඊළඟ RewriteRule සැකසීම දිගටම කරගෙන යන්න. මෙම රීතිය නොගැලපේ නම්, ඊළඟ රීතිය ක්රියාත්මක නොවේ. මේ පිළිබඳ වැඩි විස්තර පසුව.
ඊ = පාරිසරික විචල්යය සකසන්න. අපාචේ වෙබ් සේවාදායක හැසිරීමට බලපාන විවිධ පාරිසරික විචල්යයන් ඇත.
F = තහනම්. මෙම රීතිය ගැලපෙන්නේ නම් 403-තහනම් දෝෂයක් ලබා දෙයි.
ජී = ගියා. මෙම රීතිය ගැලපෙන්නේ නම් 410-ගොස් දෝෂයක් ලබා දෙයි.
එච් = හසුරුවන්නා. ඉල්ලීම නිශ්චිත MIME වර්ගයේ ආකාරයට හැසිරවීමට බල කරයි.
N = ඊළඟට. රීතිය නැවත ආරම්භ කර නැවත ගැලපීමට බල කරයි. පරෙස්සම් වෙන්න! ලූප ප්රති result ල විය හැකිය.
NC = නඩුවක් නැත. ඉඩ දෙයිjpg
jpg සහ JPG යන දෙකම ගැලපීමට.
NE = ගැලවීමක් නැත. විශේෂ අක්ෂර (.? # & Etc) ඒවායේ හෙක්ස් කේතයට සමාන ලෙස නැවත ලිවීම වළක්වයි.
NS = උපසිරැසි නොමැත. ඔබ සේවාදායක පාර්ශවීය ඇතුළත් කිරීම් භාවිතා කරන්නේ නම්, මෙය ඇතුළත් කළ ලිපිගොනු සමඟ ගැලපීම වළක්වනු ඇත.
පී = ප්රොක්සි. මොඩ්_ප්රොක්සි විසින් රීතිය හැසිරවීමට බල කරයි. විනිවිද පෙනෙන ලෙස වෙනත් සේවාදායකයන්ගෙන් අන්තර්ගතය සපයන්න, මන්ද ඔබේ වෙබ් සේවාදායකයා එය ලබාගෙන එය නැවත සේවය කරයි. මෙය භයානක ධජයකි, මන්ද දුර්වල ලෙස ලියා ඇති එකක් ඔබගේ වෙබ් සේවාදායකය විවෘත ප්රොක්සියක් බවට පත් කරන අතර එය නරක ය.
PT = පසුකර යන්න. RewriteRule ගැළපුමේ අන්වර්ථ ප්රකාශයන් සැලකිල්ලට ගන්න.
QSA = QSAppend. මුල් නූලට විමසුමක් ඇති විට ( http://example.com/thing?asp=foo) මුල් විමසුම් දාමය නැවත ලියන ලද නූලට එකතු කරන්න. සාමාන්යයෙන් එය ඉවතලනු ඇත. ගතික අන්තර්ගත සඳහා වැදගත් වේ.
R = යළි-යොමුවීම. නිශ්චිත URL වෙත HTTP යළි-යොමුවීමක් සපයන්න. නිශ්චිත යළි-යොමුවීම් කේතයක් ද ලබා දිය හැකිය [R = 303]. ඉතා සමාන RedirectMatch
වන අතර එය වේගවත් වන අතර හැකි සෑම විටම භාවිතා කළ යුතුය.
එස් = මඟ හරින්න. මෙම රීතිය මඟ හරින්න.
ටී = වර්ගය. ආපසු ලබා දුන් අන්තර්ගතයේ මයිම වර්ගය සඳහන් කරන්න. AddType
නියෝගයට බෙහෙවින් සමාන ය .
RewriteCond
එක් රීතියකට පමණක් අදාළ වන බව මා කී ආකාරය ඔබ දන්නවාද ? හොඳයි, දම්වැලෙන් ඔබට එය වටා යා හැකිය.
RewriteEngine On
RewriteCond %{HTTP_REFERER} ^https?://serverfault\.com(/|$)
RewriteRule ^/blog/(.*)\.html /blog/$1.sf.html [C]
RewriteRule ^/blog/(.*)\.jpg /blog/$1.sf.jpg
පළමු RewriteRule හි දම්වැල් ධජය ඇති හෙයින්, දෙවන නැවත ලිවීමේ නියමය ක්රියාත්මක වන්නේ පළමු වරට සිදු වන විටය, එනම් පෙර RewriteCond රීතිය ගැලපෙන විටය. අපාචේ නිත්ය ප්රකාශන ඔබේ මොළයට හානියක් කරයි නම් හැන්ඩි. කෙසේ වෙතත්, පළමු කොටසේ මා පෙන්වා දෙන සර්ව පාක්ෂික ක්රමය ප්රශස්තිකරණ දෘෂ්ටි කෝණයකින් වේගවත් වේ.
RewriteRule ^/blog/([0-9]{4})/([-0-9a-zA-Z]*)\.html /newblog/$1/$2.shtml
කොඩි හරහා මෙය සරල කළ හැකිය:
RewriteRule ^/blog/([0-9]{4})/([-0-9a-z]*)\.html /newblog/$1/$2.shtml [NC]
එසේම, සමහර කොඩි RewriteCond සඳහාද අදාළ වේ. NoCase.
RewriteCond %{HTTP_REFERER} ^https?://serverfault\.com(/|$) [NC]
"ServerFault.com" සමඟ ගැලපේ