Url


(Nar8591) #1

[right]

با سلام

من میخوام که

url

های برنامم به صورت کد شده نشون داده بشن . برای این کار در فایل

config/main.php

کد زیر رو گذاشتم

[/right]




		'urlManager'=>array(

			'urlFormat'=>'path',

                        'showScriptName'=>false,

			'rules'=>array(

				'<controller:\w+>/<id:\d+>'=>'<controller>/view',

				'<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',

				'<controller:\w+>/<action:\w+>'=>'<controller>/<action>',

                           

			),

		),

[right]و در

.htaccess :[/right]




    RewriteEngine on


    # if a directory or a file exists, use it directly


    RewriteCond %{REQUEST_FILENAME} !-f


    RewriteCond %{REQUEST_FILENAME} !-d


    # otherwise forward it to index.php


    RewriteRule . index.php



[right]

کد بالا رو اضافه کردم ، اما هیچ تغییری ایجاد نشده . کسی میتونه راهنماییم کنه؟

ممنون[/right]


(Nar8591) #2

[right]

چون 2تا آرایه

components

داشتم ،اعمال نمیشد.اما حالا خطای 404 میگیره. برای این مشکل باید چی کار کنم؟

مرسی[/right]


(Nar8591) #3

[right]

دوباره سلام

من مشکلم رو پیدا کردم و میخوام

واسه اون دسته از دوستانی که مثل خودم خیلی خیلی تازه کار هستند بگم مشکل کجا بود:

برای اینکه بخواهید تغییرات بالا اعمال بشه باید اول ماژول

rewritrEngine

شما در فایل

httpd.conf

enable باشد.

برای این منظور به لینک زیر مراجعه کنید:

My link

البته سایت های دیگه ای هم هست که خوب توضیح داده باشند،این یک نمونه بود.

سپس به لینک زیر برید و بقیه کار رو از اونجا ادامه بدید

My link

تا اینجای کار که درست شد ، فقط مونده آدرس دهی لینک هام که درست کار نمیکنند و باید اونها رو هم درست کنم.

هر وقت راه حلش رو پیدا کردم ، مینویسم

[/right]


(Nar8591) #4

[right]

دوباره سلام

حالا باید لینک های داخلی مون رو اگر در حالت

hardcode

هستند،از این حالت خارج کنیم. یعنی به جای اینکه مستقیما خودمون بنویسیم که داخل

href

چی باشه ، از

createUrl

استفاده کنیم.

میتونید به لینک زیر هم مراجعه کنید:

My link

[/right]


(Shgninc) #5

[rtl]شما نتیجه گرفتید؟ برای بنده همچنان 404 میده. نمی دونم مشکلش کجاست.[/rtl]


(Nar8591) #6

[right]

سلام

اره. من نتیجه گرفتم و سعی کردم مراحل کارم رو توضیح بدم.

  1. توی فایل

config/main.php

فقط 1 آرایه

components

داشته باشد نه بیشتر

2.مطمئن بشید که توفایل

httpd.conf

ماژول

REWRITE…

فعال هست

3.تغییر محتوای

.htaccess

و تغییر مکان این فایل به

root

اصلی

[/right]


(Shgninc) #7

[rtl]اینها درست هستند. مشکلم در rule ها هست. نمی دونم دقیقا چطوری درست کار می کنند.

[/rtl]


(Nar8591) #8

[right]

منظورتون

rule

هایی که داخل

urlManager

نوشته میشن هست؟؟

من هیچ رول دیگه ای اضافه نکردم و همون سه خط کد پیش فرض خودش هست.

و همه ی لینک هایی که خودم تعریف کرده بودم را به شکل زیر تغییر دادم که درست کار میکنه. شما هنوز خطای 404 دارید یا مشکل دیگه ای دارید؟




<a  href="<?php echo $this->createUrl('controller/action'); ?>" > link </a>



[/right]


(Shgninc) #9

[rtl]آره همین طوری دقیقا. مثلا متد createUrl برای اکشن contact آدرس[/rtl]

http://localhost/blog/index.php/site/contact

[rtl]را تولید می کند که ارور ۴۰۴ میده.

گیج شدم شدید. متوجه نمیشم مشکلش کجاست.[/rtl]


(Nar8591) #10

[right]

سلام

فکر میکنم مشکل از ماژول

rewrite

باشه نه

rule

ها. دوباره 2 خط کدی که باید در

httpd.conf

تغییر بدید رو چک کنید ، همین طور اینکه خط اول

htaccess

رو پاک کنید و بعدش اون دستورات رو بهش اضافه کند و بعد هم فایل

htaccess

رو

move

کنید. این مراحل رو دوباره چک کنید شاید یک جایی اشتباهی پیش اومده باشه

این هم

rule

ها:[/right]




		

		'urlManager'=>array(

			'urlFormat'=>'path',

                        'showScriptName'=>false,

                        'caseSensitive'=>false,


			'rules'=>array(

				'<controller:\w+>/<id:\d+>'=>'<controller>/view',

				'<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',

				'<controller:\w+>/<action:\w+>'=>'<controller>/<action>',

                          

			

                            ),

		),




(Shgninc) #11

[rtl]با این کار هم جواب نگرفتم و همچنان ارور NOT FOUND میده.

[/rtl]