سرور مجازي



 


ماژول mod_rewrite Apache به شما امکان مي دهد URL ها را با تميزتر بازنويسي کنيد ، مسيرهاي قابل خواندن توسط انسان را به رشته هاي پرس و جوي متناسب با کد تبديل کنيد. همچنين به شما امکان مي دهد URL ها را بر اساس شرايط بازنويسي کنيد.


فايل .htaccess به شما امکان مي دهد بدون دسترسي به فايل هاي پيکربندي سرور مجازي ، قوانين بازنويسي را ايجاد و اعمال کنيد. با قرار دادن فايل .htaccess در ريشه وب سايت خود ، مي توانيد بازنويسي ها را بر اساس هر سايت يا هر دايرکتوري مديريت کنيد.


در اين آموزش ، mod_rewrite  را فعال کرده و از فايلهاي .htaccess براي ايجاد يک تغيير مسير URL اصلي استفاده مي کنيد ، و سپس چند مورد استفاده پيشرفته را پيدا مي کنيد.


پيش نيازها


براي دنبال کردن اين آموزش ، به موارد زير نياز داريد:



  • يک سرور مجازي Ubuntu 20.04 که با دنبال کردن راهنماي تنظيم اوليه سرور مجازي Ubuntu 20.04 راه اندازي و شامل يک کاربر sudo غير ريشه و فايروال تنظيم شده باشد.

  • Apache که با دنبال کردن مرحله 1 نحوه نصب پشته Linux ، Apache ، MySQL ، PHP (LAMP)  در اوبونتو 20.04 نصب شده باشد.


مرحله 1 – فعال کردن  mod_rewrite


براي اينکه Apache بتواند قوانين بازنويسي را درک کند ، ابتدا بايد mod_rewrite را فعال کنيم. قبلاً نصب شده است ، اما در نصب پيش فرض Apache غيرفعال است. براي فعال کردن ماژول از دستور a2enmod استفاده کنيد:


·         $ sudo a2enmod rewrite·


با اين کار ماژول فعال مي شود يا به شما هشدار مي دهد که ماژول از قبل فعال شده است. براي اجراي اين تغييرات ، Apache  را مجدداً راه اندازي کنيد.


·         $ sudo systemctl restart apache2·


اکنون mod_rewrite کاملاً فعال است. در مرحله بعدي، يک فايل .htaccess را براي تعريف قوانين بازنويسي براي تغيير مسيرها تنظيم خواهيم کرد.


مرحله 2 – تنظيم  .htaccess


يک فايل .htaccess به ما امکان مي دهد قوانين بازنويسي خود را بدون دسترسي به فايل هاي پيکربندي سرور مجازي اصلاح کنيم. به همين دليل ، .htaccess براي امنيت برنامه وب شما بسيار مهم است. دوره اي که نام فايل قبل از آن است ، اطمينان حاصل مي کند که فايل مخفي است.


توجه: هر قانوني که مي توانيد در يک فايل .htaccess قرار دهيد ، مي تواند مستقيماً در فايل هاي پيکربندي سرور مجازي قرار گيرد. در حقيقت ، اسناد رسمي Apache  استفاده از فايلهاي پيکربندي سرور مجازي را به جاي .htaccess توصيه مي کند زيرا Apache آن را سريعتر از اين پردازش مي کند.


با اين حال ، در اين مثال ساده ، افزايش عملکرد ناچيز خواهد بود. علاوه بر اين ، تنظيم قوانين در .htaccess مناسب است ، به خصوص با چندين وب سايت در همان سرور مجازي. براي اجراي تغييرات نيازي به راه اندازي مجدد سرور مجازي نيست و نيازي به امتيازات اصلي براي ويرايش آن قوانين ، ساده سازي تعمير و نگهداري و ايجاد تغييرات با يک حساب غير شخصي نيست. برخي از نرم افزارهاي منبع باز منبع آزاد ، مانند WordPress و Joomla ، اغلب براي تغيير و ايجاد قوانين اضافي در صورت تقاضا به يک فايل .htaccess متکي هستند.


قبل از شروع استفاده از فايل هاي .htaccess ، بايد تنظيمات ديگري را انجام و آن را ايمن کنيد.


به طور پيش فرض ، Apache با استفاده از فايل .htaccess اعمال قوانين بازنويسي را ممنوع مي کند ، بنابراين ابتدا بايد تغييراتي در فايل اعمال کنيد. فايل پيش فرض پيکربندي Apache را با استفاده از nano يا ويرايشگر متن مورد علاقه خود باز کنيد.


·         $ sudo nano /etc/apache2/sites-available/000-default.conf·


در داخل آن فايل ، بلوک <VirtualHost *: 80> را که از خط اول شروع مي شود ، پيدا خواهيد کرد. در داخل آن بلوک ، بلوک جديد زير را اضافه کنيد تا فايل پيکربندي شما مانند زير باشد. اطمينان حاصل کنيد که همه بلوک ها به درستي قرار گرفته اند.


/etc/apache2/sites-available/000-default.conf


<VirtualHost *:80>


<Directory /var/www/html>


Options Indexes FollowSymLinks


AllowOverride All


Require all granted


</Directory>


 


. . .


</VirtualHost>


 


فايل را ذخيره کنيد و ببنديد. براي اجراي اين تغييرات ، Apache را مجدداً راه اندازي کنيد.


·         $ sudo systemctl restart apache2·


اکنون ، يک فايل .htaccess را در webroot ايجاد کنيد.


·         $ sudo nano /var/www/html/.htaccess·


اين خط را در بالاي فايل جديد اضافه کنيد تا موتور بازنويسي فعال شود.


/var/www/html/.htaccess


RewriteEngine on


 


فايل را ذخيره کرده و خارج شويد.


اکنون ما يک فايل .htaccess عملياتي داريم که مي توانيم از آن استفاده کنيم تا قوانين مسيريابي برنامه وب را کنترل کنيم. در مرحله بعد ، ما فايلهاي وب سايت نمونه را ايجاد خواهيم کرد که براي نشان دادن قوانين بازنويسي قوانين از آنها استفاده خواهيم کرد.


مرحله 3 – پيکربندي بازنويسي  URL


در اينجا ، يک بازنويسي URL اصلي را تنظيم مي کنيم که URL هاي زيبا را به مسيرهاي واقعي به صفحات تبديل مي کند. به طور خاص ، به کاربران اين امکان را مي دهيم که به http: // your_server_ip / about دسترسي پيدا کنند ، اما صفحه اي به نام about.html را نمايش مي دهند.


با ايجاد فايلي به نام about.html در webroot شروع کنيد.


·         $ sudo nano /var/www/html/about.html·


کد HTML زير را در فايل کپي کنيد ، سپس آن را ذخيره کرده و ببنديد.


/var/www/html/about.html


<html>


<head>


<title>About Us</title>


</head>


<body>


<h1>About Us</h1>


</body>


</html>


 


مي توانيد به اين صفحه به آدرس http: //your_server_ip/about.html دسترسي پيدا کنيد ، اما توجه داشته باشيد که اگر سعي کنيد به http: // your_server_ip / About خود دسترسي پيدا کنيد ، خطاي 404 Not Found  را مشاهده خواهيد کرد. براي دسترسي به صفحه با استفاده از /about ، يک قانون بازنويسي ايجاد خواهيم کرد.


همه RewriteRules از اين قالب پيروي مي کنند:


General RewriteRule structure


RewriteRule pattern substitution [flags]


 



  • RewriteRule بخشنامه را مشخص مي کند.



  • pattern يک عبارت معمولي است که رشته مورد نظر را از URL مطابقت مي دهد ، همان چيزي است که بيننده در مرورگر تايپ مي کند.

  • substitution مسير رسيدن به URL واقعي ، يعني مسير سرورهاي فايل Apache است.

  • flags پارامترهاي اختياري هستند که مي توانند نحوه عملکرد قانون را تغيير دهند.


بياييد قانون بازنويسي URL ما را ايجاد کنيم. فايل .htaccess را باز کنيد.


·         $ sudo nano /var/www/html/.htaccess·


بعد از اولين خط ، RewriteRule هايلايت شده را اضافه کرده و فايل را ذخيره کنيد.


در اين حالت ، ^about$ الگو است ، About.html ، substitution است ، و [NC] پرچم است. مثال ما از چند کاراکتر با معني خاص استفاده مي کند:



  • ^ نشان دهنده شروع URL پس از your_server_ip/ است.

  • $ نشانگر پايان URL است.

  • about با رشته “about” جفت ميشود

  • html فايل واقعي است که کاربر به آن دسترسي پيدا مي کند.

  • [NC] پرچمي است که قضيه را بي حس مي کند.


اکنون مي توانيد به مرورگر خود به http: // your_server_ip / about دسترسي پيدا کنيد. در واقع ، با اين قانون که در بالا نشان داده شده است ، آدرس هاي اينترنتي زير به about.html اشاره مي کنند:



  • http: // your_server_ip / about ، به دليل تعريف قانون.

  • http: // your_server_ip / About ، زيرا اين قانون به حروف حساس نيست.

  • http: //your_server_ip/about.html ، زيرا نام فايل مناسب اصلي هميشه کار خواهد کرد.


با اين حال ، موارد زير کار نخواهد کرد:


http: // your_server_ip / about / ، زيرا اين قانون به صراحت بيان مي کند که ممکن است بعد از آن چيزي وجود نداشته باشد ، زيرا کاراکتر $ بعد از about ظاهر مي شود.


http: // your_server_ip / contact ، زيرا با رشته about  در قانون مطابقت نمي دهد.


اکنون يک فايل .htaccess عملياتي با يک قانون اساسي داريد که مي توانيد نيازهاي خود را تغيير داده و گسترش دهيد. در بخش هاي بعدي ، دو نمونه ديگر از بخشنامه هاي متداول را نشان خواهيم داد.


مثال 1 – ساده سازي رشته هاي جستار با  RewriteRule


برنامه هاي وب اغلب از رشته هاي جستار استفاده مي کنند ، که با استفاده از علامت سؤال (؟) بعد از آدرس به URL اضافه مي شوند. پارامترهاي جداگانه با استفاده از چ (&) محدود مي شوند. رشته هاي جستار ممکن است براي انتقال داده هاي اضافي بين صفحات برنامه فردي استفاده شود.


به عنوان مثال ، يک صفحه نتيجه جستجو که به زبان PHP نوشته شده است ممکن است از URL مانند http://example.com/results.php؟item=shirt&season=summer استفاده کند. در اين مثال ، دو پارامتر اضافي به اسکريپت برنامه result.php موهومي منتقل مي شود: item ، با متغير shirt ، و مقدار summer. برنامه ممکن است از اطلاعات رشته پرس و جو براي ايجاد صفحه مناسب براي بازديد کننده استفاده کند.


قوانين بازنويسي Apache اغلب براي ساده کردن پيوندهاي طولاني و ناخوشايند مانند موارد فوق در URL هاي دوستانه که تايپ و تفسير بصري آسان تر است ، به کار مي روند. در اين مثال ، ما مي خواهيم لينک بالا را ساده کنيد تا به http://example.com/shirt/summer تبديل شويد. پارامتر shirt  و summer  هنوز در آدرس هستند اما بدون نام رشته و نام اسکريپت.


در اينجا يک قانون براي اجراي اين وجود دارد:


Simple substitution


RewriteRule ^shirt/summer$ results.php?item=shirt&season=summer [QSA]


 


shirt/summer به طور واضح در آدرس درخواستي مطابقت دارد و به Apache گفته مي شود که به جاي آن ، results.php?item=shirt&season=summer را ارائه دهد.


پرچم هاي [QSA] معمولاً در قوانين بازنويسي استفاده مي شوند. آنها به Apache مي گويند هر رشته درخواست اضافي را در URL ارائه شده اضافه کند ، بنابراين اگر بازديد کننده http://example.com/shirt/summer?page=2  را تايپ کند، سرور مجازي


با results.php?item=shirt&season=summer&page=2 پاسخ خواهد داد. بدون آن ، رشته پرس و جو اضافي حذف مي شود.


در حالي که اين روش به افکت مطلوب دست مي يابد ، هر دو نام آيتم و فصل در قانون کدگذاري مي شوند. اين بدان معني است که اين قانون براي ساير موارد ، مانند شلوار ، يا فصولي مانند زمستان کار نخواهد کرد.


براي عمومي تر کردن اين قاعده ، مي توانيم از عبارات معمول براي مطابقت با قسمت هاي اصلي آدرس استفاده کنيم و از آن قسمت ها در الگوي تعويض استفاده کنيم. سپس قانون اصلاح شده به شرح زير خواهد بود:


Simple substitution


RewriteRule ^([A-Za-z0-9]+)/(summer|winter|fall|spring) results.php?item=$1&season=$2 [QSA]


 


اولين گروه عبارت معمول در پرانتز با رشته اي حاوي کاراکترهاي الفبا و اعداد مانند shirt  يا pants  مطابقت دارد و قطعه را به عنوان متغير $ 1 ذخيره مي کند. دومين گروه عبارت معمول در پرانتز دقيقاً با summer, winter, fall, يا  spring مطابقت دارد و به همين ترتيب قطعه را به عنوان $2 ذخيره مي کند.


قطعات همسان پس از آن به جاي shirt  و summer  که قبلاً از آنها استفاده مي کرديم در URL نتيجه در متغيرهاي item  و season  استفاده مي شوند.


موارد فوق ، به عنوان مثال ، http://example.com/pants/summer را به http://example.com/results.php؟item=pants&season=summer تبديل مي کند. اين مثال همچنين اثبات آينده است ، و به چندين item  و season  اجازه مي دهد تا با استفاده از يک قانون واحد به طور صحيح بازنويسي شوند.


مثال 2 – اضافه کردن شرايط با منطق با استفاده از RewriteConds


بازنويسي قوانين ااماً هميشه يک به يک و بدون محدوديت ارزيابي نمي شوند. دستورالعمل RewriteCond به ما امکان مي دهد تا شرايط را براي بازنويسي خود اضافه کنيم تا هنگام پردازش قوانين ، کنترل کنيم. کليه RewriteConds با فرمت زير عمل مي کند:


General RewriteCond structure


RewriteCond TestString Condition [Flags]


 



  • RewriteCond بخشنامه RewriteCond را مشخص مي کند.

  • TestString رشته اي است که بايد در برابر آن آزمايش کنيد.

  • Condition الگو يا شرط مطابقت است.

  • Flags پارامترهاي اختياري هستند که ممکن است شرايط و قوانين ارزيابي را تغيير دهند.


اگر RewriteCond درست ارزيابي شود ، RewriteRule  بلافاصله در نظر گرفته مي شود. در صورت عدم موفقيت ، اين قانون منتفي مي شود. RewriteCond  چندگانه ممکن است يکي پس از ديگري مورد استفاده قرار گيرد و با رفتار پيش فرض ، همه بايد درست ارزيابي کنند تا قاعده زير در نظر گرفته شود.


به عنوان نمونه ، فرض مي کنيم شما مي خواهيئ به جاي نشان دادن صفحه خطاي استاندارد 404 Not Found ، همه درخواست ها را به فايل ها يا ديرکتوريهاي غير موجود در سايت خود به صفحه اصلي برگردانيد. اين امر مي تواند با قوانين زير انجام شود:


Redirect all requests to non-existent files and directories to home page


RewriteCond %{REQUEST_FILENAME} !-f


RewriteCond %{REQUEST_FILENAME} !-d


RewriteRule . / [R=301]


 


به اين شرح:


%{REQUEST_FILENAME} رشته اي براي بررسي است. در اين حالت ، نام فايل درخواستي است ، که يک متغير سيستمي براي هر درخواست است.


-f  يک وضعيت داخلي است که تأييد مي کند که آيا نام درخواست شده در ديسک وجود دارد يا فايل است. ! يک عامل منفي است. ! -f  ترکيبي فقط درصورتي که يک نام مشخص وجود نداشته باشد يا فايل نداشته باشد ، درست ارزيابي مي شود.


به طور مشابه ، ! -d  فقط درصورتي که يک نام مشخص وجود نداشته باشد يا يک ديرکتوري نباشد ، درست ارزيابي مي شود.


RewriteRule در خط نهايي فقط براي درخواست ها به فايل ها يا دايرکتوري هاي غير موجود وارد خواهد شد. خود RewriteRule  بسيار ساده است. نقطه . در اين الگو با هر چيزي مطابقت دارد و جايگزيني هر درخواست را به ريشه / وب سايت هدايت مي کند.


علاوه بر اين ، پرچم [R = 301]  به Apache مي گويد يک کد پاسخ HTTP  ، 301 Moved Permanently را به مرورگر بازگرداند ، در نتيجه مرورگر مي داند که تغيير مسير اتفاق افتاده است و صريحاً به جاي URL درخواست شده ، ريشه وب سايت را واگذار مي کند. و تغييري در نوار آدرس مرورگر اعمال ميشود.


بدون اين پرچم ، Apache  محتواي اصلي وب سايت را بر مي گرداند ، اما مرورگر همچنان فکر مي کند URL صفحه درخواستي وجود داشته باشد و آدرس درخواست شده را ابتدا در نوار آدرس نشان دهد.


نتيجه


mod_rewrite  به شما امکان مي دهد URL هاي قابل خواندن توسط انسان را ايجاد کنيد. در اين آموزش شما از دستورالعمل RewriteRule براي هدايت آدرس هاي اينترنتي از جمله آدرس ها با رشته هاي پرس و جو استفاده کرده ايد. همچنين با استفاده از دستورالعمل RewriteCond  URL  هاي هدايت شونده مشروط را نوشتيد.


اگر مي خواهيد در مورد mod_rewrite اطلاعات بيشتري کسب کنيد ، به mod_rewrite Introduction و مستندات رسمي Apache  براي mod_rewrite نگاهي بيندازيد.


 


نحوه استفاده از Traefik به عنوان پروکسي مع براي کانتينرهاي Docker در اوبونتو 20.04


نحوه دانلود فايل ها با cURL


نحوه نصب و ايمن سازي Redis در Centos7


چگونه مي توان محيط JupyterLab را در اوبونتو .04 تنظيم کرد


نحوه نصب Webmin در Ubuntu 20.04


نحوه بازنويسي آدرس هاي اينترنتي با mod_rewrite براي Apache در اوبونتو 20.04


نحوه مديريت چندين سرور با دستورات Ad Hoc Ansible


چگونه مي توان REST API را با Prisma و PostgreSQL ساخت


نحوه ميزباني وب سايت با استفاده از Cloudflare و Nginx در اوبونتو .04


نحوه استفاده از Traefik به عنوان پروکسي مع براي کانتينرهاي Docker در Ubuntu .04


 


خريد vps – خريد سرور مجازي – خريد سرور – سرور هلند – فروش vps – سرور مجازي آمريکا – خريدvps – سرور مجازي هلند – فروش سرور مجازي – سرور آمريکا – vps – سرور مجازي انگليس – سرور مجازي آلمان – سرور مجازي کانادا – خريد vps آمريکا – خريد وي پي اس – سرور – خريد سرور مجازي هلند – vps خريد – سرور مجازي فرانسه – سرور مجازي هلند – خريد vps آمريکا – خريد سرور مجازي ارزان هلند – vps – خريد vps هلند – خريد سرور مجازي آمريکا – خريد vps فرانسه – تست vps – سرور مجازي تست – سرور مجازي ويندوز – ارزانترين vps – خريد وي پي اس – vps ارزان – 


 


 


آخرین ارسال ها

آخرین جستجو ها

مدرسه شاداب 22331559 پایگاه اموزشی .فن آوری عرصه دیجیتال venosgrafikc قلم قم دامنه دوّم مُصْلِحِینَ نگاه به تاریخ اسلام نمایندگی بوش سایت گنج یابی از من جدا مشو ...