- چهارشنبه 9 اسفند 1396 ساعت 17:00
- 3.1.9
- کامل شده
- منقضی شده
به طور پیش فرض، URLها در کدایگنایتر به گونه ای طراحی شده اند که کاربرپسند و بهینه برای موتورهای جستجو باشند. کدایگنایتر به جای استفاده از روش کوئری استرینگ (Query String) که در سیستمهای داینامیک استفاده میشود، از روشی بر پایه سگمنت (segment-based) استفاده میکند. (سگمنت به معنی بخش و تکه است و در اینجا هر سگمنت با اسلش از سگمنت دیگر جدا شده است.)

example.com/news/article/my_article
توجه
استفاده از روش کوئری استرینگ اختیاری و قابل فعالسازی است که در ادامه توضیح خواهیم داد.
سگمنتهای URLها
سگمنت ها در URL، منطبق با رویکرد MVC در ادامه نشان داده شدهاند. (اگر با MVC آشنایی ندارید، معرفی الگوی معماری MVC را مطالعه کنید.)
example.com/class/function/ID
- اولین سگمنت، نام کلاس کنترلر را مشخص میکند که باید فراخوانی شود.
- دومین سگمنت، متد یا فانکشن کلاس است که باید فراخوانی شود.
- سومین سگمنت و سگمنتهای بعد از آن، آیدی (ID) و هر متغییری را که باید به متد کنترلر پاس داده شود را مشخص میکنند.
کتابخانه URL و هلپر URL، فانکشنهایی دارند که کار با دادههای URLها را ساده میکند. علاوه بر این، URLها با استفاده از ویژگی مسیریابی URL یا URL Routing میتوانند بازنویسی (remapping) شوند تا انعطافپذیرتری بیشتری ایجاد کنند.
حذف index.php از URL
در حالت پیشفرض، index.php نیز در URLها وجود دارد.
example.com/index.php/news/article/my_article
اگر ماژول mod_rewrite در وبسرور آپاچی فعال باشد، با قرار دادن ruleهای مشخص در فایل .htaccess، به راحتی میتوانید index.php را از URLها حذف کنید. مثال زیر یک نمونه از ruleها را نشان میدهد.
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
در مثال بالا، همه ریکوئستهای HTTP به جز ریکوئستهایی که به یک فایل یا دایرکتوری موجود در سرور اشاره دارند، به عنوان ریکوئستی برای لود فایل index.php تلقی میشوند.
توجه
این ruleها بر حسب تنظیمات سرور، ممکن هست گاهی به درستی کار نکنند.
افزودن پسوند به URLها
در فایل config/config.php میتوانید پسوندی را مشخص کنید تا به انتهای همه URLهای تولید شده توسط کدایگنایتر اعمال شود. برای مثال URL زیر:
example.com/index.php/products/view/shoes
با تنظیم پسوند .html برای URLها، URL فوق تبدیل به URL زیر میشود:
example.com/index.php/products/view/shoes.html
فعالسازی کوئری استرینگها در URLها
در برخی موارد ممکن است نیاز به استفاده از کوئری استرینگها در URLها باشد:
index.php?c=products&m=view&id=345
کدایگنایتر از این قابلیت نیز پشتیبانی میکند که میتوانید در فایل application/config.php آن را فعال کنید.
$config['enable_query_strings'] = FALSE;
$config['controller_trigger'] = 'c';
$config['function_trigger'] = 'm';
اگر مقدار enable_query_strings را TRUE قرار دهید، این قابلیت فعال میشود. با تریگر کنترلر (controller_trigger) و تریگر متد (function_trigger)، تریگرهای فراخوانی کنترلر و متد شخصیسازی میشوند.
index.php?c=controller&m=method
توجه
اگر از کوئری استرینگ استفاده کنید، دیگر قادر به استفاده از هلپرهای URL (و هر هلپر دیگری که وظیفه تولید URLها را دارد، مانند هلپرهای form) نخواهید بود، زیرا این هلپرها برای کار با URLهای بر پایه سگمنت طراحی شدهاند و باید URLها را خودتان بسازید.