تصویر محمدعلی اکبری

در این مطلب درباره ماژول mod_rewrite (موتور بازنویسی آدرس) آپاچی و ساختار فایل htaccess مربوط به این ماژول صحبت خواهم کرد.

خطوط زیر مربوط به فایل htaccess دروپال است.

# Various rewrite rules.
<IfModule mod_rewrite.c>
RewriteEngine on
# Rewrite URLs of the form ‘x’ to the form ‘index.php?q=x’.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
</IfModule>

موتور بازنویسی در مجموعه قوانین (rulesets) میچرخد و آنها را اجرا می‌کند. هر مجموعه شامل تعدادی شرط بازنویسی (RewriteCond) به همراه قانون بازنویسی (RewriteRule) است. یک مجموعه می‌تواند شرطی هم نداشته باشد. وقتی یک قانون منطبق پیدا میشود، اگر شرایط صادق بود اجرا می‌شود.

پس ابتدا انطباق قانون (RewriteRule) و سپس شرایط (RewriteCond) بررسی می‌شود؟ بله همینطور است و توجه به این نکته برای نوشتن مجموعه قوانین بسیار مهم است.

RewriteRule

سینتکس RewriteRule به صورت زیر است.

RewriteRule Pattern Substitution
در مثال بالا برای قسمت الگو (pattern) مقدار ^(.*)$ را داریم.
^
شروع خط
$
انتهای خط
()
مقداری که با الگوی داخل آن انطباف دارد در متغیر $1 قرار می‌دهد.
.
هر کاراکتر منفردی
*
تعداد صفر یا بیشتر از الگوی منطبق قبلی
.*
هر متنی حداقل شامل یک کاراکتر

همچنین در قسمت جایگزینی (Substition) مقدار index.php?q=$1 را داریم.

این مقدار با توجه به نرم‌افزار متفاوت است. این جایگزینی به معنای پاسخ دادن همه درخواست‌های روی سرور توسط فایل index.php است و URI به عنوان پارامتر q به این فایل ارسال می‌شود.

در انتهای این قانون بین براکت‌ها [] تعدادی پرچم وجود دارد.

[L] آخرین قانون: بعد از این قانون فرآیند بازنویسی متوقف می‌شود.

[QSA] مخفف Query String Append

RewriteCond

بعد از انطباق RewriteRule بررسی شرایط شروع می‌شود.

 

طبقه بندی: 
برچسب ها: 

دیدگاه‌ها

تصویر سعید عباسی

سعید عباسی (تایید نشده)

با سلام و خسته نباشید شرمنده من یک مشکل در سایتم دارم لطفاً کمکم کنید.
من اسکریپت سایت خبری را با نام RssAggregatorPro خرید داری کردم ولی بر روی هر هاستی تست کردم تصاویر خبری سایت لود نمی شود.نام سایت من
http://www.khanehkhabar.ir/ است لطفاً کمکم کنید.
09385662022

تصویر Mehrdad Re

Mehrdad Re

قرار بود در مورد مشکل ماژول بانک اقتصاد نوین کمکم کنید که خب به کل بی خیال شدید و حتی جواب ایمیل بنده رو ندادید.
بگذریم یه سوال داشتم

برای تاریخ شمسی ایا ماژول calendar یا full calendar برای ایجاد تایم لاین داریم ؟

تصویر امیر سرایی

امیر سرایی (تایید نشده)

بسیار کامل و مفید بود

افزودن نظر جدید