پارس دیتا
کد: KB-SW-ER-FA-3
زمان انتشار: پنجشنبه 18 مهر 1392

نحوه تبدیل و ترجمه کدهای استفاده شده در htaccess. به کدهای قابل شناسایی در web.config

برخی برنامه های php به همراه فایل های پیکربندی وب سرورهای آپاچی ایجاد می شوند. این فایل های پیکربندی htaccess. نام دارند که حاوی یک سری تنظیمات هستند که برای ادغام برنامه با قابلیت های سرور مورد استفاده قرار می گیرد. IIS7 قابلیت های بالا را در فایلی با نام Web.config قرار می دهد. این فایل حاوی اطلاعاتی مانند module loading ، تنظیمات امنیتی ، تنظیمات session state و تنظیمات Compilation,language است. همچنین عناصری مانند connection string نیز در این فایل تعریف می شوند.
در ادامه چندین تابع مربوط به سرورهای آپاچی به همراه کدهای htaccess. این توابع و کد معادل آنها در سرور IIS و فایل web.config تشریح می گردند.
از طریق این لینک می توانید فایل و یا کدهای htaccess. را به قالب فایل web.config تبدیل نمائید تا بتوانید آنها را در وب سرور IIS اجرا نمائید.
در نظر داشته باشید استفاده این دانشنامه و اعمال مطالب آن بر روی سرور، به دلیل کار بر روی تنظیمات اصلی سرویس دهنده وب ممکن است باعث اختلال و بروز مشکل و در نهایت عدم بالا آمدن سایت گردد، از این رو قبل از انجام هرگونه تغییر یا تنظیم، از کلیه اطلاعات میزبانی خود نسخه پشتیبان تهیه فرمائید.
لازم به توضیح است تنظیمات این دانشنامه می بایست فقط از سمت اشخاص مسلط به امور طراحی سایت و وب مسترها اعمال گردد.
  • قابلیت Request Filtering :
    از این امکان امنیتی برای محدود کردن دسترسی مرورگرها به فایلهایی که حاوی component های برنامه هستند ، استفاده می شود. این ویژگی در IIS7 ایجاد گردید. تمامی پارامترهای آن در تگ <requestFiltering> قرار داده می شوند . زمانیکه یک درخواست HTTP توسط این قابلیت بلاک می شود، IIS خطای 404 را بر می گرداند. کدهای زیر مجموعه ی کد 404 هر کدام بیان کننده توصیفی از علت لغو درخواست می باشند. مثلا کد 404.7 به معنی لغو درخواست به دلیل نوع پسوند فایل است. راهنمای FilesMatch برای انجام این کار استفاده می شود .

    کد Request Filtering با قالب htaccess.:
    <FilesMatch>
    "\.(engine|inc|info|install|module|profile|po|sh|.*sql|theme|tpl(\.php)?|xtmpl)$|^(code-style\.pl|Entries.*|Repository|Root|Tag|Template)$">
    Order allow,deny
    </FilesMatch>
    مشابه آن در فایل web.config به شکل ذیل است :
     <security>
    <requestfiltering>
    <denyurlsequences>
    <add sequence="engine">
    <add sequence="inc">
    <add sequence="info">
    <add sequence="install">
    <add sequence="module">
    <add sequence="profile">
    <add sequence="po">
    <add sequence="sh">
    <add sequence="theme">
    <add sequence="tpl(\.php">
    <add sequence="Root">
    <add sequence="Tag">
    <add sequence="Template">
    <add sequence="Repository">
    <add sequence="code-style">
    </add></add></add></add></add></add></add></add></add></add></add></add></add></add></add></denyurlsequences>
    <fileextensions>
    <add allowed="false" fileextension=".sql">
    <add allowed="false" fileextension=".pl">
    </add></add></fileextensions>
    </requestfiltering>
    </security>
  • قابلیت Default Document :
    صفحات اصلی سایت با نام هایی مانند index.php ,index.html ,default.aspx ایجاد می شود. صفحه ی پیش فرض اولین فایلی است که هنکام لود سایت مراجعه به آن انجام می شود. توسط این امکان می توانید مشخص کنید که ترتیب اجرای این صفحات به چه صورت باشد. راهنمای DirectoryIndex برای وب سرور مشخص می نماید که اولویت اجرا با کدام فایل است.
    کد htaccess.:
    # Set the default handler.
    DirectoryIndex index.php
    

    کد معادل Web.config:

    <defaultDocument>
        <files>
    <remove value="index.php" />
    <add value="index.php" />
    </files>
    </defaultDocument>
  • قابلیت URL Rewriting :
    IIS ماژول Url Rewrting را پشتیبانی می کند. توسط Rule های این ماژول می توانید درخواست های URL را مدیریت نمائید. بیشتر کاربرد این مورد کوتاه کردن آدرس های اینترنتی به منظور راحتی در به خاطر سپردن آنهاست. از دیگر کاربردهای آن امکان ایجاد تعریف ساب دامین در برخی کنترل پنل های میزبانی است که sub domain در آنها به درستی کار نمی کند.

    کد Rewrite با قالب htaccess.:
    RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
    RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} !=/favicon.ico
    RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
    کد Rewrite با قالب Web.config:
    <rewrite>
    <rules>
    <rule name="Imported Rule 1" stopProcessing="true">
    <match url="^(.*)$" ignoreCase="false" />
    <conditions>
    <add input="{HTTP_HOST}" pattern="^example\.com$" />
    </conditions>
    <action type="Redirect" redirectType="Permanent" url="http://www.example.com/{R:1}" />
    </rule>
    <rule name="Imported Rule 2" stopProcessing="true">
    <match url="^(.*)$" ignoreCase="false" />
    <conditions>
    <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
    <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
    <add input="{URL}" pattern="^/favicon.ico$" ignoreCase="false" negate="true" />
    </conditions>
    <action type="Rewrite" url="index.php?q={R:1}" appendQueryString="true" />
    </rule>
    </rules>
    </rewrite>
  • قابلیت Error page redirecting :
    ممکن است بخواهید هنگامیکه سایت با خطایی مواجه می شود از نمایش آن جلوگیری کرده و صفحه ی دیگری را به کاربر نمایش دهید. برخی web application ها خطاهای استاندارد (404 و 400) را مدیریت می کنند. راهنمای ErrorDocument برای مدیریت و سفارشی کردن این خطاها استفاده می شود.

    کد مدیریت خطا در htaccess.:
    # Make Application handle any 404 errors.
    ErrorDocument 404 /index.php
    در IIS از راهنمای HTTP Errors برای انجام این کار استفاده می شود که کد آن در ذیل موجود است :
           <!-- HTTP Errors section should only be enabled if the "Error Pages"
    feature has been delegated as "Read/Write" at the Web Server level.
    <httpErrors>
    <remove statusCode="404" subStatusCode="-1" />
    <error statusCode="404" prefixLanguageFilePath="" path="/index.php" responseMode="ExecuteURL" />
    </httpErrors>
    -->
  • قابلیت Directory Browsing :
    هنگامیکه صفحه ی پیش فرض تعریف نشده باشد، این گزینه به شما امکان نمایش تمامی فلدرهای سایت را می دهد. اگر صفحه ی پیش فرض سایت در قسمت صفحات default تعریف نشده باشد لیستی از فلدرهای موجود در Ftp به بازدیدکننده نمایش داده می شود.
    در htaccess. توسط راهنمای Options می توانید این امکان را فعال و یا غیر فعال نمائید.
    # Don't show directory listings for URLs which map to a directory.
    Options -Indexes
    کد معادل آن در IIS به شکل زیر است :
     <directoryBrowse enabled="false" />
    
  • قابلیت Cache aging :
    راهنمای Caching این اطمینان را به شما می دهند که محتوای صفحات static برای مدت زمان مشخصی در Cache ذخیره می شود. برای فعالسازی این ویژگی در سرورهای آپاچی از کد ذیل استفاده نمائید.
    کد htaccess.:
    # Requires mod_expires to be enabled.
    <IfModule mod_expires.c>
    # Enable expirations.
    ExpiresActive On

    # Cache all files for 2 weeks after access (A).
    ExpiresDefault A1209600

    # Do not cache dynamically generated pages.
    ExpiresByType text/html A1
    </IfModule>
    در IIS از ماژول Output Caching استفاده می شود تا بتوان Caching را کنترل کرد.معادل آن در IIS به شکل ذیل است :
     <caching>
    <profiles>
    <add extension=".php" policy="DisableCache" kernelCachePolicy="DisableCache" />
    <add extension=".html" policy="CacheForTimePeriod" kernelCachePolicy="CacheForTimePeriod" duration="14:00:00:00" />
    </profiles>
    </caching>
آخرین بروزرسانی: سه‌شنبه 9 آبان 1396 16:33:36