URLها در کدایگنایتر

به طور پیش فرض، URLها در کدایگنایتر به گونه ای طراحی شده اند که کاربرپسند و بهینه برای موتورهای جستجو باشند. کدایگنایتر به جای استفاده از روش کوئری استرینگ (Query String)  که در سیستم‌های داینامیک استفاده می‌شود، از روشی بر پایه سگمنت (segment-based) استفاده می‌کند. (سگمنت به معنی بخش و تکه است و در اینجا هر سگمنت با اسلش از سگمنت دیگر جدا شده است.) URLها در کدایگنایتر

example.com/news/article/my_article
توجه: استفاده از روش کوئری استرینگ اختیاری و قابل فعال‌سازی است که در ادامه توضیح خواهیم داد.

سگمنت‌های URLها

سگمنت ها در URL، منطبق با رویکرد MVC در ادامه نشان داده شده‌اند. (اگر با MVC آشنایی ندارید، معرفی الگوی معماری MVC را مطالعه کنید.)

example.com/class/function/ID
  1. اولین سگمنت، نام کلاس کنترلر را مشخص می‌کند که باید فراخوانی شود.
  2. دومین سگمنت، متد یا فانکشن کلاس است که باید فراخوانی شود.
  3. سومین سگمنت و سگمنت‌های بعد از آن، آی‌دی (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ها را خودتان بسازید.
منبع
CodeIgniter URLs
اشتراک‌گذاری