مقدمه Mod_rewrite و ورق تقلب – مرجع سریع

افشای: پشتیبانی شما به حفظ سایت کمک می کند! ما برای برخی از خدماتی که در این صفحه توصیه می کنیم هزینه ارجاع دریافت می کنیم.


mod_rewrite بخشی از نرم افزار وب سرور Apache است که در رایانه میزبان وب شما اجرا می شود. این اجازه می دهد تا یک URL به صورت پویا تغییر یابد ، یا “بازنویسی شود”.

اگر از WordPress با پیوندهای “زیبا” روشن استفاده می کنید ، mod_rewrite را در عمل مشاهده خواهید کرد. به طور پیش فرض ، تمام صفحات وردپرس با استفاده از نشانی اینترنتی حاوی شماره شناسه و احتمالاً متغیرهای دیگری که به وردپرس می گویند بارگیری می شود بارگیری می شوند. اما وقتی پیوندهای زیبا بسیار فعال هستند ، قوانین mod_rewrite آن متغیرهای زشت را به کلمات تغییر می دهند. ما بعضی اوقات URL های حاصل را “تمیز” می نامیم.

بازنویسی با mod_rewrite در واقع فرآیند ترجمه URL از یک کثیف به یک پاک در هنگام پرواز است. بازدیدکننده هرگز تغییر URL را در نوار آدرس نمی بیند ، زیرا پردازش توسط Apache انجام می شود قبل از ارسال هر چیزی به مرورگر بازدید کننده.

اجرای وب سایت بدون استفاده از mod_rewrite یا URL های پاک کاملاً ممکن است. اما به همین دلیل است که بیشتر مردم از آن استفاده می کنند:

  • برای آسانتر کردن URL ها برای خواندن URL ها. URL های “Pretty” به یاد ماندنی تر ، تایپ آسان تر و خواندن با صدای بلند آسان تر هستند.
  • برای آسان تر URL ها برای تفسیر موتورهای جستجو. یک URL زیبا به موتور جستجو می گوید که صفحه در مورد چیست ، اما جملگی از شناسه ها و متغیرها وجود ندارد. موتورهای جستجو عاشق معنایی هستند ، بنابراین بازنویسی URL کمک می کند تا از طبقه بندی صحیح صفحه بندی و نمایه سازی صفحه اطمینان حاصل شود.
  • برای ایجاد تغییر مسیرهای موقت از یک پرونده یا مسیر دیگر.

تنظیم قوانین Mod_rewrite

اگر از Apache استفاده می کنید ، باید از میزبان وب خود بخواهید mod_rewrite را در پرونده http.conf در حساب خود فعال کند. در بسیاری موارد ، mod_rewrite بصورت پیش فرض فعال می شود.

در مرحله بعد ، باید یک پرونده .htaccess را در فهرست اصلی حساب میزبان خود ایجاد کنید. پرونده .htaccess پوشه root و تمام پرونده های زیر آن را کنترل می کند ، مگر اینکه آن را با یک فایل .htaccess دیگری رد کنید که پایین درخت پوشه است. اگر در حال حاضر یک پرونده .htaccess دارید ، قبل از ادامه یک نسخه پشتیبان تهیه کنید.

بازنویسی قوانین دارای دو بخش است. خط اول بازنویسی موتور موتور را در آپاچی فعال می کند. (خط شروع با # نظری است ، که نادیده گرفته می شود.) بخش دوم عبارت mod_rewrite به موتور بازنویسی می گوید که چگونه URL باید تغییر یابد. بنابراین ما شرط را بیان می کنیم و سپس به آپاچی می گوییم چه کاری انجام دهد. در اینجا مثالی از یک قاعده وجود دارد که بازدید کننده را از یک پرونده به پرونده دیگر هدایت می کند.

# بازنویسی را روشن کنید
بازنویسی مهندسی را روشن کنید
# oldname.html را به newname.html تبدیل کنید
rewriteRule ^ oldname.html $ newname.html

این قانون پرونده ای به نام oldname.html (شرط) را بررسی می کند. اگر تطابقی پیدا کند ، آن را به صورت پویا با newname.html جایگزین می کند. کاربر نهایی محتوای oldname.html را می بیند ، اما در نوار URL مرورگر خود newname.html را مشاهده می کند. اگر mod_rewrite با Oldname.html مطابقت نداشت ، این قانون نادیده گرفته می شود.

به دنبال الگوهای

ایجاد یک قانون برای هر URL زمان زیادی می برد ، بنابراین باید از عبارات منظم استفاده کنیم. عبارات منظم به دنبال الگوهای هستند و یک تکه از رشته را با دیگری جایگزین می کنند. این مثال را بگیرید:

# بازنویسی را روشن کنید
بازنویسی مهندسی را روشن کنید
# نویسنده / NAME را تبدیل کنید به author.php؟ id = NAME
بازنویسی خط ^ نویسنده / ([[a-z] +) /؟ $ author.php؟ id = 1 $ [L]

با شکستن آن ، در اینجا چگونگی عملکرد شرط نویسنده / ([[a-z] +) /؟ $ آمده است:

  • ^ آغاز قانون است
  • نویسنده / رشته ای است که در URL اصلی به دنبال آن هستیم
  • ([a-z] +) یک کارت ویزیت است – به دنبال کلماتی است که بعد از نویسنده ظاهر می شود /
  • /؟ برش را در انتهای URL اضافه می کند
  • $ علامت پایان شرط است.

و در اینجا نحوه عملکرد author.php؟ id = 1 $ آمده است:

  • author.php؟ id = رشته ای است که می خواهیم بنویسیم
  • 1 دلار برای کلماتی که در این شرط پیدا کردیم ، در بالا قرار دارد.

در پایان قانون ، [L] پرچمی است که به Apache می گوید در صورت پردازش این قانون ، دیگر از اعمال قوانین متوقف شود.

این فقط یک نمونه بسیار اساسی از کارهایی است که mod_rewrite می تواند انجام دهد. به جای نوشتن [a-z] ، می توانیم از [xyz] برای یافتن حروف x ، y یا z یا (y | n) برای یافتن y یا n استفاده کنیم. در منابع زیر می توانید منابع کامل تری به نحو بیان منظم پیدا کنید.

بازنویسی پرچم ها

در مثال بالا ، در پایان قانون ، یک پرچم ، [L] اضافه کردیم. پرچم ها اختیاری هستند. آنها باید در یک مجموعه از براکت های مربعی در انتهای خط قرار داشته باشند ، و اگر می خواهید از چندین پرچم استفاده کنید ، باید کاما را بین آنها قرار دهید.

پرچم ها را می توان به صورت کامل یا به صورت نسخه کوتاه نوشت. در حالی که نوع پرچم های کوتاه تایپ ساده تر است ، اگر می خواهید کد خود را آسان بخوانید ، استفاده از پرچم های بلند ایده خوبی است.

  • ب: فرار از شخصیت های غیر الفبایی؛ ممکن است نیاز به AllowEncodedSlashes روی روشن باشد.
  • C یا زنجیره ای: در پرونده .htaccess خود قانون را به قانون بعدی زنجیره کنید. دوم فقط در صورتی اجرا می شود که اولین نتیجه در یک مسابقه باشد.
  • CO یا کوکی: وقتی یک قانون مطابقت دارد ، یک کوکی ایجاد کنید. به ویژگی های اضافی نیاز دارد.
  • DPI یا دور انداختن: از PATH_INFO در URL بازنویسی شده صرف نظر می کند.
  • E یا env: یک متغیر محیط را تنظیم می کند.
  • خاتمه: مشابه L ، این پردازش مجدد بازنویسی بیشتر متوقف می شود.
  • F یا ممنوع: با پاسخ به قانون ، وضعیت 403 ممنوع را باز می گرداند.
  • G یا رفته: با پاسخ به قانون ، وضعیت 410 Gone را برمی گرداند.
  • H یا handler: این قانون را مجبور می کند تا از یک کنترل کننده خاص استفاده کند ، که به عنوان یک متغیر مشخص شده است.
  • L یا آخرین: پردازش قانون را متوقف می کند.
  • N یا بعد: مجدداً مجموعه قوانین فعلی را با استفاده از نتیجه قانون به عنوان ورودی شروع می کند.
  • NC یا nocase: حساسیت مورد را برای این قانون خاموش می کند.
  • NE یا noescape: کاراکترهای ویژه را به کدهای شش برابر معادل آنها تبدیل می کند.
  • NS یا nosubreq: بازنویسی بازنویسی ها را برای اعمال subrequests متوقف می کند.
  • P یا Proxy: نتیجه قانون را به سمت mod_proxy سوق می دهد و سایر قوانین باقی مانده را نادیده می گیرد.
  • PT یا passthrough: یک مسیر پرونده را به URL تبدیل می کند.
  • QSA یا qsappend: رشته پرس و جو را با مورد جدید ترکیب می کند.
  • QSD یا qsdiscard: رشته پرس و جو قدیمی را دور می زند و آن را جایگزین می کند.
  • QSL یا qslast: یک رشته پرس و جو را در آخرین علامت سوال در رشته تقسیم می کند.
  • R یا تغییر مسیر: یک تغییر مسیر HTTP صادر کنید.
  • S یا جست و خیز: تعدادی قانون را پرش می کنید. باید به عنوان [S = n] تعریف شود ، جایی که n تعداد قوانین برای جستجوی آن است.
  • T یا نوع: نوع MIME پاسخ قاعده را تنظیم می کند.

کوپن میزبانی وب

به دنبال چیزهای زیادی در هاست mod_rewrite هستید?
میزبانی A2 در تست های سرعت اخیر ما شماره 1 را به دست آورد. در حال حاضر می توانید 50٪ در برنامه های سازگار با توسعه دهنده آنها صرفه جویی کنید. از این لینک تخفیف استفاده کنید
برای گرفتن معامله.

متغیرهای سرور

لیست زیر متغیرهای سرور زیادی دارد که برخی از آنها با mod_rewrite قادر به استفاده از آنها خواهید بود. همه متغیرها توسط همه سرورها پشتیبانی نمی شوند و به همین ترتیب ، شما ممکن است بتوانید از متغیرهای سرور که در اینجا ذکر نشده استفاده کنید.

اگر قبلاً از هدرهای HTTP اطلاع دارید ، بسیاری از متغیرهای سرور در این لیست برای شما آشنا هستند ، اما معدودی هستند که بطور اختصاصی برای استفاده با mod_rewrite ارائه شده اند..

  • API_VERSION: تاریخ نسخه API.
  • AUTH_TYPE: متن اصلی؛ هیچکدام ، اساسی ، جدی یا فرم را برمی گرداند.
  • CONN_REMOTE_ADDR: آدرس IP همسالان.
  • CONTEXT_DOCUMENT_ROOT: اطلاعات مربوط به نقشه برداری فهرست در Apache.
  • CONTEXT_PREFIX: اطلاعات مربوط به نقشه برداری فهرست در Apache.
  • DOCUMENT_ROOT: مسیر مطلق سند.
  • هندلر: نام کنترل کننده.
  • HTTP_ACCEPT: در صورت وجود هدر HTTP ، هدر قبول HTTP.
  • HTTP_COOKIE: این کوکی در صورت وجود در هدر درخواست HTTP.
  • HTTP_FORWARDED: اگر مسیر موجود باشد در عنوان درخواست HTTP وجود دارد.
  • HTTP_HOST: در صورت وجود در هدر درخواست HTTP ، سرور فعلی.
  • HTTP_PROXY_CONNECTION: مسیر پروکسی HTTP در صورت وجود در هدر درخواست HTTP.
  • HTTP_REFERER: URL صفحه مرجع.
  • HTTP_USER_AGENT: عامل کاربری است که برای دسترسی به صفحه استفاده شده است.
  • HTTP2: آیا این اتصال از HTTP2 استفاده می کند. روشن یا خاموش است.
  • HTTPS: آیا این اتصال از HTTPS استفاده می کند. روشن یا خاموش است.
  • IPV6: آیا اتصال از IPVS استفاده می کند. روشن یا خاموش است.
  • IS_SUBREQ: خواه درخواست ارسال درخواست است؛ درست یا غلط.
  • PATH_INFO: داده مسیری که نام یک نام را دنبال می کند.
  • QUERY_STRING: بعد از علامت سؤال ، کاراکترهای موجود در URL.
  • REMOTE_ADDR: IP کاربر.
  • REMOTE_HOST: نام دامنه کاملاً واجد شرایط کاربر.
  • REMOTE_USER: نام کاربری معتبر کاربر.
  • REMOTE_IDENT: نام کاربری معتبر کاربر ، با شناسه بازگشت.
  • REQUEST_FILENAME: مسیر محلی فایل یا اسکریپت در درخواست.
  • REQUEST_METHOD: روش درخواست؛ HEAD ، PUT ، GET یا POST.
  • REQUEST_SCHEME: طرح در درخواست URI.
  • REQUEST_URI: درخواست URI ، به عنوان یک مسیر.
  • SCRIPT_FILENAME: مسیر مطلق فیلمنامه.
  • SCRIPT_GROUP: نام گروه اسکریپت.
  • SCRIPT_USER: کاربری که مالک اسکریپت است.
  • SERVER_ADDR: IP سرور که پرونده .htaccess در آن ذخیره شده است.
  • SERVER_ADMIN: سرور سرور ، همانطور که در آپاچی تنظیم شده است.
  • SERVER_NAME: نام سرور ، همانطور که در Apache تنظیم شده است.
  • SERVER_PORT: شماره پورت که درخواست به آن ارسال شده است.
  • SERVER_PROTOCOL: پروتکل و تجدید نظر در درخواست.
  • SERVER_SIGNATURE: نسخه سرور و نام میزبان.
  • SERVER_SOFTWARE: رشته شناسه سرور.
  • THE_REQUEST: درخواست در کل.
  • TIME: تاریخ و زمان در قالب YYYYMMDDHHMMSS.
  • TIME_DAY: روز جاری.
  • TIME_HOUR: ساعت فعلی.
  • TIME_MIN: دقیقه فعلی.
  • TIME_MON: ماه جاری.
  • TIME_SEC: ثانیه فعلی.
  • TIME_WDAY: روز فعلی ، به عنوان شماره بازگشت (شروع با 0 برای یکشنبه).
  • TIME_YEAR: سال جاری.

منابع

  • راهنمای مبتدی برای Mod_rewrite: این راهنما از سال 2004 است ، اما در اصول mod_rewrite پایه و اساس خوبی را ارائه می دهد.
  • بازنویسی URL برای مبتدیان: راهنمای جامع برای مبتدیان و کاربران متوسط.
  • Apache بازنویسی برنامه Cheatsheet: نسخه HTML ورق تقلب در اصل در iLoveJackDaniels.com منتشر شده است.
  • آشنایی با عبارات منظم پیشرفته: دانش خود را از اصطلاحات منظم با این راهنما توسعه دهید.
  • RegEx Pal: قبل از استقرار در سایت خود ، نحو بیان منظم خود را بررسی کنید.

خلاصه

mod_rewrite روشی مفید و قدرتمند برای کنترل رفتار Apache است. می توانید کارهای زیادی را با mod_rewrite انجام دهید که در اینجا ما پوشش داده نشده ایم. این موارد شامل هدایت مجدد ، جلوگیری از اتصال سریع تصویر ، ممنوعیت بازدید کنندگان خاص از سایت شما و موارد دیگر می شود. بهترین راه برای استفاده از mod_rewrite یادگیری اصطلاحات منظم است.

مطالعه بیشتر و منابع

ما راهنماهای ، آموزش ها و اینفوگرافیک های بیشتری در رابطه با توسعه وب داریم:

  • مقدمه و منابع PHP: درباره محبوب ترین زبان با پس زمینه در وب استفاده کنید.
  • برنامه نویسی شبکه با سوکت های اینترنت: درباره شبکه در اینترنت همه چیز را بیاموزید.
  • مقدمه و منابع MySQL: MySQL یکی از محبوب ترین پایگاه داده ها در اینترنت است.

نحوه انتخاب CMS مناسب

مطمئن نیستید که از CMS می خواهید استفاده کنید؟ مقاله ما ، نحوه انتخاب صحیح CMS را بررسی کنید.

لیست نهایی ابزارهای وب مستر A-Z
نحوه انتخاب CMS مناسب

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map