negar
(Nar8591)
July 16, 2013, 6:59am
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]
negar
(Nar8591)
July 16, 2013, 10:16am
2
[right]
چون 2تا آرایه
components
داشتم ،اعمال نمیشد.اما حالا خطای 404 میگیره. برای این مشکل باید چی کار کنم؟
مرسی[/right]
negar
(Nar8591)
July 17, 2013, 5:56am
3
[right]
دوباره سلام
من مشکلم رو پیدا کردم و میخوام
واسه اون دسته از دوستانی که مثل خودم خیلی خیلی تازه کار هستند بگم مشکل کجا بود:
برای اینکه بخواهید تغییرات بالا اعمال بشه باید اول ماژول
rewritrEngine
شما در فایل
httpd.conf
enable باشد.
برای این منظور به لینک زیر مراجعه کنید:
My link
البته سایت های دیگه ای هم هست که خوب توضیح داده باشند،این یک نمونه بود.
سپس به لینک زیر برید و بقیه کار رو از اونجا ادامه بدید
My link
تا اینجای کار که درست شد ، فقط مونده آدرس دهی لینک هام که درست کار نمیکنند و باید اونها رو هم درست کنم.
هر وقت راه حلش رو پیدا کردم ، مینویسم
[/right]
negar
(Nar8591)
July 18, 2013, 9:24am
4
[right]
دوباره سلام
حالا باید لینک های داخلی مون رو اگر در حالت
hardcode
هستند،از این حالت خارج کنیم. یعنی به جای اینکه مستقیما خودمون بنویسیم که داخل
href
چی باشه ، از
createUrl
استفاده کنیم.
میتونید به لینک زیر هم مراجعه کنید:
My link
[/right]
shgninc
(Shgninc)
July 24, 2013, 9:32am
5
[rtl]شما نتیجه گرفتید؟ برای بنده همچنان 404 میده. نمی دونم مشکلش کجاست.[/rtl]
negar
(Nar8591)
July 25, 2013, 5:00am
6
[right]
سلام
اره. من نتیجه گرفتم و سعی کردم مراحل کارم رو توضیح بدم.
توی فایل
config/main.php
فقط 1 آرایه
components
داشته باشد نه بیشتر
2.مطمئن بشید که توفایل
httpd.conf
ماژول
REWRITE…
فعال هست
3.تغییر محتوای
.htaccess
و تغییر مکان این فایل به
root
اصلی
[/right]
shgninc
(Shgninc)
July 25, 2013, 6:33am
7
[rtl]اینها درست هستند. مشکلم در rule ها هست. نمی دونم دقیقا چطوری درست کار می کنند.
[/rtl]
negar
(Nar8591)
July 25, 2013, 7:10am
8
[right]
منظورتون
rule
هایی که داخل
urlManager
نوشته میشن هست؟؟
من هیچ رول دیگه ای اضافه نکردم و همون سه خط کد پیش فرض خودش هست.
و همه ی لینک هایی که خودم تعریف کرده بودم را به شکل زیر تغییر دادم که درست کار میکنه. شما هنوز خطای 404 دارید یا مشکل دیگه ای دارید؟
<a href="<?php echo $this->createUrl('controller/action'); ?>" > link </a>
[/right]
shgninc
(Shgninc)
July 25, 2013, 7:24am
9
[rtl]آره همین طوری دقیقا. مثلا متد createUrl برای اکشن contact آدرس[/rtl]
http://localhost/blog/index.php/site/contact
[rtl]را تولید می کند که ارور ۴۰۴ میده.
گیج شدم شدید. متوجه نمیشم مشکلش کجاست.[/rtl]
negar
(Nar8591)
July 27, 2013, 4:52am
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
(Shgninc)
October 16, 2013, 5:43pm
11
[rtl]با این کار هم جواب نگرفتم و همچنان ارور NOT FOUND میده.
[/rtl]