Debian 10

بازنویسی URL را با mod_rewrite برای Apache در Debian 10

ماژول mod_rewrite در Apache به شما امکان می دهد URL ها را با روشی تمیزتر بازنویسی کنید ، مسیرهای قابل خواندن توسط انسان را به رشته های جستار سازگار با کد تبدیل کنید. همچنین به شما امکان می دهد URL ها را بر اساس شرایط بازنویسی کنید.
فایل .htaccess به شما امکان می دهد بدون دسترسی به فایلهای پیکربندی سرور مجازی ، قوانین بازنویسی را ایجاد و اعمال کنید. با قرار دادن فایل .htaccess در ریشه وب سایت خود ، می توانید بازنویسی ها را بر اساس هر سایت یا هر دایرکتوری مدیریت کنید.
در این آموزش ، شما می توانید mod_rewrite را فعال کرده و از فایلهای .htaccess برای ایجاد یک تغییر مسیر URL اصلی استفاده کنید و سپس چند مورد استفاده پیشرفته را جستجو کنید.
پیش نیازها
برای دنبال کردن این آموزش ، به موارد زیر نیاز دارید:
یک سرور مجازی Debian 10 با دنبال کردن راهنمای ستاپ اولیه سرور مجازی Debian 10 تنظیم شده باشد، و شامل کاربر sudo غیر ریشه و یک فایروال باشد.
Apache که طبق مراحل 1 و 2 نحوه نصب وب سرور مجازی Apache در Debian 10 نصب شده باشد.

مرحله 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 به دلیل زمان پردازش سریعتر استفاده کنید.
با این حال ، در این مثال ساده ، افزایش عملکرد ناچیز خواهد بود. علاوه بر این ، تنظیم قوانین در .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>

فایل را ذخیره کنید و ببندید. اگر از nano استفاده کرده اید ، این کار را با فشار دادن CTRL + X ، Y ، سپس enter انجام دهید.
سپس ، پیکربندی خود را بررسی کنید:
$ sudo apache2ctl configtest

اگر خطایی وجود ندارد ، Apache را مجدداً راه اندازی کنید تا تغییرات خود را به مرحله اجرا برسانید:
$ sudo systemctl restart apache2

اکنون ، یک فایل .htaccess را در ریشه وب ایجاد کنید:
$ 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 در ریشه وب شروع کنید:
$ 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 زیر را اضافه کنید و فایل را ذخیره کنید:
/var/www/html/.htaccess
RewriteEngine on
RewriteRule ^about$ about.html [NC]

در این حالت ، ^about$ الگو است ، about.html جایگزین است ، و [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 اضافه می شوند. پارامترهای جداگانه با استفاده از ampersand (&) محدود می شوند. رشته های پرس و جو ممکن است برای انتقال داده های اضافی بین صفحات برنامه فردی استفاده شود.
به عنوان مثال ، یک صفحه نتیجه جستجو که به زبان PHP نوشته شده است ، می تواند از URL مانند http://example.com/results.php?item=shirt&season=summer استفاده کند. در این مثال ، دو پارامتر اضافی به اسکریپت نرم افزار result.php موهومی منتقل می شود: item ، با مقدار shirt ، و season با مقدار summer. برنامه ممکن است از اطلاعات رشته پرس و جو برای ایجاد صفحه مناسب برای بازدید کننده استفاده کند.
قوانین بازنویسی Apache اغلب برای ساده کردن پیوندهای طولانی و ناخوشایند به عنوان مثال URL فوق به URLهای مناسب تر که تایپ و تفسیر بصری آسان تری دارند ، به کار می روند. در این مثال ، ما می خواهیم لینک بالا را ساده کنیم تا به http://example.com/shirt/summer تبدیل شود. مقادیر پارامتر shirt و summer هنوز در آدرس هستند ، اما بدون نام رشته و نام اسکریپت.
در اینجا یک قانون برای انجام این کار وجود دارد:
Simple substition
RewriteRule ^shirt/summer$ results.php?item=shirt&season=summer [QSA]

summer / shirt به طور واضح در آدرس درخواستی مطابقت دارد و به 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 پاسخ می دهد. بدون آن ، رشته پرس و جو اضافی دور ریخته می شود.
در حالی که این روش به جلوه مطلوب دست می یابد ، هم نام آیتم و هم فصل به طور خاص کدگذاری می شوند. این بدان معنی است که این قانون برای سایر موارد ، مانند pants ، یا فصول دیگر مانند winter کار نخواهد کرد.
برای عمومی تر کردن این قاعده ، می توانیم از عبارات منظم برای مطابقت با قسمت های آدرس اصلی استفاده کنیم و از آن قسمت ها در الگوی جایگزین استفاده کنیم. قانون اصلاح شده به این شکل در خواهد آمد:
Simple substition
RewriteRule ^([A-Za-z0-9]+)/(summer|winter|fall|spring) results.php?item=$1&season=$2 [QSA]

اولین گروه عبارت معمول در پرانتز با رشته ای حاوی حروف الفبا و اعدادی مانند shirt یا pants مطابقت دارد و بخش منطبق را به عنوان متغیر $1 ذخیره می کند. دومین گروه عبارت معمول در پرانتز دقیقاً summer ، winter ، fall یا spring را مطابقت میدهد و به همین ترتیب بخش سازگار را به عنوان $2 ذخیره می کند.
بخش های منطبق پس از آن در URL نتیجه به صورت متغیرهای item و season به جای مقادیر shirt و summer استفاده می شوند.
موارد فوق مثلاً http://example.com/pants/summer را به http://example.com/results.php?item=pants&season=summer تبدیل می کند. این مثال همچنین مناسب آینده است ، به شما امکان می دهد چندین مورد و فصل را به طور صحیح با استفاده از یک قانون واحد بازنویسی کنید.
مثال 2 – اضافه کردن شرایط با منطق با استفاده از RewriteConds
قوانین بازنویسی الزاماً همیشه یک به یک و بدون محدودیت ارزیابی نمی شوند. دستورالعمل RewriteCond به ما امکان می دهد شرایطی را برای قوانین بازنویسی خود اضافه کنیم تا کنترل کنیم چه زمانی این قوانین پردازش می شوند. کلیه RewriteConds با فرمت زیر عمل می کنند:
General RewriteCond structure
RewriteCond TestString Condition [Flags]

RewriteCond دستورالعمل RewriteCond را مشخص می کند.
TestString رشته ای است که باید در برابر آن آزمایش کنید.
Condition الگو یا شرط مطابقت است.
Flags پارامترهای اختیاری هستند که ممکن است شرایط و قوانین ارزیابی را تغییر دهند.
اگر نتیجه ارزیابی RewriteCond درست باشد ، RewriteRule بعدی در نظر گرفته می شود. اگر درست نباشد ، این قانون کنار گذاشته می شود. چندین RewriteConds ممکن است یکی پس از دیگری مورد استفاده قرار گیرند ، اگرچه همه باید برای ارزیابی قانون بعدی درست باشند.
به عنوان نمونه ، فرض می کنیم شما می خواهید به جای نشان دادن صفحه خطای استاندارد  404 Not Found ، همه درخواست ها را به فایل ها یا دیرکتوری های غیر موجود در سایت خود برگردانید. این امر با قوانین زیر حاصل میشود:
Redirect all requests to non-existent files and directories to home page
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /

%{REQUEST_FILENAME} رشته ای برای بررسی است. در این حالت ، نام فایل درخواستی است ، که متغیر سیستمی برای هر درخواست میباشد.
-f یک شرایط داخلی است که تأیید می کند که آیا نام درخواست شده در دیسک وجود دارد و یک فایل است. ! یک عامل منفی کننده است. ترکیب! -f فقط درصورتی که نام مشخص شده وجود نداشته باشد یا فایل نباشد ، درست ارزیابی می شود.
• به طور مشابه ،! -d فقط درصورتی که نام مشخص شده وجود نداشته باشد یا دیرکتوری نباشد ، درست ارزیابی می شود.
RewriteRule در خط نهایی فقط برای درخواست به فایل ها یا دایرکتوری های غیر موجود وارد خواهد شد. خود RewriteRule بسیار ساده است و هر درخواستی را به ریشه / وب سایت هدایت می کند.
نتیجه
mod_rewrite به شما امکان می دهد URL های قابل خواندن توسط انسان ایجاد کنید. در این آموزش ، یاد گرفتید که چگونه از دستورالعمل RewriteRule برای هدایت URL ها استفاده کنید ، از جمله آنهایی که رشته های پرس و جو دارند. همچنین یاد گرفتید که چگونه URL ها را با استفاده از دستورالعمل RewriteCond به صورت مشروط هدایت کنید.
اگر می خواهید در مورد mod_rewrite اطلاعات بیشتری کسب کنید ، به mod_rewrite Introduction و مستندات رسمی Apache برای mod_rewrite نگاهی بیندازید.

 

 

از این لینک ها زیر می توانید آمورش های بیشتری برای لینوکس پیدا کنید :

پارامترهای پیش فرض در جاوا اسکریپت  –  اجرای چندین نسخه PHP بر روی یک سرور Debian 10

نحوه راه اندازی یک پروژه React با برنامه Reactنصب و ایمن سازی phpMyAdmin در اوبونتو 18

پیکربندی یک تایید اعتبار مجاز(CA) در CentOS 8  –  تنظیم برنامه Node.js برای تولید در CentOS 7

نصب MariaDB در اوبونتو 18.04  –  ایمن کردن Apache با Let’s Encrypt در Debian 10

نحوه نصب Node.js در CentOS 8  –  بازنویسی URL را با mod_rewrite برای Apache در Debian 10

راه اندازی فایروال با استفاده از firewalld در CentOS 8  –  نصب وب سرور Apache در Debian 10

اضافه کردن و حذف کاربران در CentOS 8 –  نصب Apache Tomcat 9 در Debian 10

نصب و استفاده از PostgreSQL در CentOS 8  –  راه اندازی سرور اولیه با Debian 10

نصب MariaDB در CentOS 8  –  چگونه با JSX عناصر واقعی ایجاد کنیم

نصب و پیکربندی VNC در Debian 10  –  استفاده از سرور از راه دور Docker

نصب و ایمن سازی Grafana در اوبونتو 18  –  نحوه نصب Git در CentOS 8

نصب Git در Debian 10 –  نصب و پیکربندی Zabbix برای ردیابی ایمن سرورهای

نحوه نصب Node.js در Debian 10  –  نصب وب سرور Apache در CentOS 7

نحوه نصب Webmin در Debian 10  –  نصب و پیکربندی Zabbix برای ردیابی ایمن سرور

نصب وردپرس با بانک اطلاعاتی در اوبونتو  – ساخت و استقرار سرور GraphQL با Node.js و MongoDB

نصب پایتون 3 و تنظیم نویسی محلی macOS  – نصب و ایمن سازی phpMyAdmin با Nginx در سرور

نصب Nagios 4 و نظارت بر سرور اوبونتو 18  –  نصب Python 3 و تنظیم یک محیط برنامه نویسی

نحوه نصب R بر روی Debian 10  –  راه اندازی سرور Prisma روی اوبونتو 18.04

نصب و پیکربندی Laravel با LEMP در اوبونتو 18  –  نصب و پیکربندی pgAdmin 4 در Server Mode

نصب Python 3 و تنظیم برنامه نویسی CentOS 8نصب Jitsi Meet در Ubuntu 18.04

 

 

کلمات کلیدی خرید سرور

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


https://vpsgol.net/product/vps-germany/

https://vpsgol.net/product/vps-usa/

https://vpsgol.net/product/vps-france/

https://vpsgol.net/product/vps-canada/

https://vpsgol.net/product/vps-poland/

https://vpsgol.net/product/vps-netherlands/

https://vpsgol.net/product/vps-england/