مشکل با Url

[rtl]

با سلام.

توی فایل config/main.php بخشی است که مربوط به urlManager است که اگر از حالت توضیحات درش بیاریم URL های ما به جای قالب زیر[/rtl]




site.com/index.php?r=post/create



[rtl]به صورت [/rtl]




site.com/index.php/post/create



[rtl]در میایند. امام بنده وقتی این کار را می کنم و آدرس را میزنم خطای [/rtl]





[b]Not Found[/b]

 The requested URL site.com/index.php/post/create was not found on this server.


Apache/2.2.22 (Ubuntu) Server at localhost Port 80



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

مود rewrite رو فعال کردی؟

.htaccess چی؟

[rtl]

شما در htaccess اصلی سایتت مقادیر زیر را وارد کن و ذخیره کن

[/rtl]

IndexIgnore /

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule . index.php

ساختار آدرس سایت می شود :

site.com/controller/action

[rtl]با تشکر از دوستان.

این محتویات فایل تنظیمات بخش urlManager:[/rtl]




    	'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>',

        	),

    	),



[rtl]و این هم محتویات فایل htaccess. :[/rtl]




IndexIgnore */*

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule . index.php



[rtl]ولی همچنان هر آدرسی را که می زنم با خطا روبرو می شوم.[/rtl]

up…

:(


       'showScriptName' => true,



htaccess هم پاک کن نمیخواد

[rtl]مهندس دقیقا همونطور که گفتید مقدار ‘showScriptName’ را true کردم و فایل htaccess را هم همه محتویاتش را کامنت کردم. سایت به عنوان نمونه این آدرس را تولید کرده:[/rtl]




localhost/form-test/index.php/types/index



[rtl]درسته؟

ولی باز هم همان خطا را می دهد.[/rtl]

[font=“Tahoma”][rtl]ظاهرا آپاچی داره جفتک می اندازه بهتره از nginx استفاده کنید . :)[/rtl][/font]

[rtl]ممنون از جوابتون. به نظر همنیطور میاد.

حالا برای reset کردن تنظیمات apache در اوبونتو چند تا راه پیدا کردم، که به نظر بهرترینش پاک کردن آن با remove و نصب مجددش است. درسته؟

راه دیگه ای هم داره یا نه؟

[/rtl]

apt-get purge apache2

[right]هنوز معلوم نیست که mod_rewrite

را فعال کردی یا نه

sudo a2enmod rewrite

sudo service apache2 restart

توی سایت هم باید این ها رو داشته باشی

<Directory /var/www/> Options Indexes FollowSymLinks MultiViews # changed from None to FileInfo AllowOverride FileInfo Order allow,deny allow from all </Directory>

[/right]

[rtl][font="Tahoma"]توجه داشته باشید نحوه نمایش URL ها به دو شکل زیر:

  1. site.com/index.php/post/create

  2. site.com/post/create

دو بحث کاملاً مجزاست.

برای داشتن حالت اول که مد نظر شماست، تنها این تنظیمات مهمه:

‘urlFormat’=>‘path’,

‘showScriptName’=>true,

و هیچ ارتباطی هم به apache و mod_rewrite و htaccess. نداره!

پس تا اینجای کار، اگر به مشکلی برخورد میکنی، مشکل رو در جاهای دیگه جستجو کن.

چیزی که من حدس میزنم اونقدری سادست که شک دارم!

شما در متن خطایی که اینجا آوردید اینطور نوشتید:

The requested URL site.com/index.php/post/create was not found on this server.

آیا این خطا مستقیم توسط apache تولید شده و خطا رو کپی پست کردید؟! در این صورت وب سرور برای دسترسی از طریق دامنه مجازی site.com کانفیگ شده و با این دامنه سایتتون باز میشه؟

و مورد دیگه اینکه از وجود controller و action یی که استفاده میکنید مطمئن بشید.

بعد از اینکه این مشکل حل شد میتونیم درمورد حذف index.php از آدرس صحبت کنیم ;)

[/font][/rtl]

[right][rtl]سلام دوستان[/right][right]نمیدونستم سوالمو باید کجا مطرح کنم دیگه همینجا نوشتم امیدوارم جواب بگیرم[/right][right]من تو سایت که دارم طراحی میکنم یک بخش دارم که مربوط به طبقه بندی های سایته و آدرسش به این صورت باید باشه[/right][right][/rtl][/right]


example.ir/categories/cat1/sub_cat1/.../...

[rtl]یعنی وقتی فقط[/rtl] cat1 [rtl]وارد شده بود باید کل خبر های اون طبقه بندی و زیر شاخه هاش رو نشون بده که تا اینجا مشکلی ندارم و حتی اگر[/rtl] sub_cat1 [rtl]هم وارد شده باشه بازم مشکلی نیس ولی وقتی قرار باشه زیر شاخه های بیشتری رو تو آدرس بگیرم مشکل دارم و ارور میخورم حال چطوری باید آدرس رو پیاده سازی[/rtl]

[right][rtl]این هم مقادیر[/rtl] urlManager[/right]





array(

    'showScriptName' => false,

    'urlFormat' => 'path',

    'urlSuffix' => '/',

    'rules' => array(

        '' => 'site/index',

        'categories/<mainTag>/<childTag>'=>'categories/index',

        'categories/<mainTag>/'=>'categories/index/',

        'sitemap.xml'=>'site/sitemap',

        'gii'=> YII_DEBUG ?'gii/default/index':false,

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

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

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

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

    )

)