نیاز به کد htaccess

amirepsilon

Active Member
سلام
دوستان با توجه به اطلاعات پایین لطفا کد htaccess رو بدین:

در یک سایت تبدیل تمام آدرس ها از این :
HTML:
news.php?id=1
به این :
HTML:
news/1
و تبدیل:
HTML:
article.php?id=1
به این:
HTML:
article/1
و این:
HTML:
web.php?id=1&cat=2
به این:
HTML:
web/1/2.html
باید برای هر صفحه ای که داریم یک خط کد بنویسیم ؟
ممنون
 

D.A.V.O.O.D

Member
این کد ، کار شما را راه می اندازه ...
PHP:
RewriteEngine On
Options +Followsymlinks

RewriteRule ^news/([0-9]+)$ news.php?id=$1 [QSA,NC,L]
RewriteRule ^article/([0-9]+)$ article.php?id=$1 [QSA,NC,L]
RewriteRule ^web/([0-9]+)/([0-9]+).html$ web.php?id=$1&cat=$2 [QSA,NC,L]
 

amirepsilon

Active Member
سلام
ممنونم
عالی بود
ولی جالب اینجاست که وقتی از طریق ریرایت صفحه لود میشه خرابه !
یعنی ظاهرا فایل های css رو لود نمیکنه !
مشکل کجاست ؟
 

D.A.V.O.O.D

Member
بله همانطور که آقا ناصر فرمودند باید به سی اس اس آدرس دقیق دهید .
در واقع وقتی شما style.css را توی صفجه ای با آدرس yourdomain.com قرار می دهی در واقع غیر مستقیم داری می گی که لینک سی اس اس شما اینه : youdomain.com/style.css این آدرس را خود سرور تشخیص شده . با سئو کردن لینک ها یه صورت پوشه ای شما این آدرس را به آدرس همان پوشه تغییر می دی و طبیعتا چون این پوشه مجازی هست و style.css درون آن قرار ندارد سرور نمی تواند سی اس اس شما را پیدا کنید .

برای این رفع این مشکل کافیست که به سی اس اس لینک مستقیم بدهید .
 

amirepsilon

Active Member
ممنونچ
ولی اگر یه cms داشته باشیم و ممکنه روی 10 تا دویمن پیادهد بشه چی ؟
 

amirepsilon

Active Member
در ضمن برای همه چیز باید به این صورت لینک داد ؟

عکس ها
اسکریپت ها
و هر چیز که توی html صداش میزنیم ؟
اینجوری یکم دردسر ساز میشه
روش بهتری نیست ؟
 

yakoza

Well-Known Member
برای اینکه کارت ساده تر بشه توی یه فایل مثلا config.php اینو تعریف کن

PHP:
<?php
define('SITE_URL','http://www.domain.com'); 
?>

بعد هر جا خواستی آدرس بدی فایل کانفیگ رو فراخونی کن و از این ثابت استفاده کن
مثلا

کد:
<link rel="stylesheet" type="text/css" href="<?php echo SITE_URL; ?>css/theme.css" />
 

yakoza

Well-Known Member
برای اینکه کارت ساده تر بشه توی یه فایل مثلا config.php اینو تعریف کن

PHP:
<?php
define('SITE_URL','http://www.domain.com/'); 
?>

بعد هر جا خواستی آدرس بدی فایل کانفیگ رو فراخونی کن و از این ثابت استفاده کن
مثلا

کد:
<link rel="stylesheet" type="text/css" href="<?php echo SITE_URL; ?>css/theme.css" />
 

amirepsilon

Active Member
سلام
ممنون
ای کاش مشکل به همون جا بود

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

فکر کنید در این آدرس هستیم:
HTML:
amir/majid
حالا روی لینک که کلیک میکنیم :
HTML:
<a href="submit" class="nav">ارسال مطلب</a>
کار نمیده !
به فرض که کار بده
اگه توی این صفحه بودیم چی ؟
HTML:
amir/majid/safir
انگار باید برای هر صفحه یه لینک جداگونه بنویسیم !

راه حلی نداره ؟؟؟!!!
 

amirepsilon

Active Member
وقتی لینک های داخلی سایت رو عوض میکنیم (مثلا صفحه اخبار به مقالات) مشکل اینجاست که اگر در اخبار یک پله بالاتر بودیم لینک کار نمیکند
یعنی انگار باید برای تمامی لینک ها و آدرس ها در صفحات آدرس کامل بنویسیم !

یعنی هیچ لینکی رو به این صورت ببنویسیم :

کد:
href="/amir"

بلکه با http باشه !!!

کد:
href="http://majid.com/amir"

درسته ؟

آیا این خودش seo نیست؟
 

amirepsilon

Active Member
در ضمن آیا برای هر آدرس باید در htaccess یک خط کد نوشت ؟

مثلا برای هر یک از این آدرس ها نمیشه از یک خط دستور در htaccess استفاده کرد ؟
کد:
news.php
news.php?id=3
news.php?id=3&cat=4
 

justpersian

Member
اینکه آدم بیاد برای تبدیل هر آدرس تو htaccess یه خط کد بنویسه جالب نیست !
شما با این کد می تونید تمام صفحات رو به دلخواه آدرس دهی کنید :
PHP:
RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ index.php?file=$1 [L,QSA]
بعد هم به آرایه تبدیلش می کنیم و با foreach تجزیش می کنیم !
البته تو OOP بیشتر به کار میاد !
اما در مورد لینک ها ، من خودم اصولا یک تابع در برنامه هام دارم به نام create_link که باهاش لینک درست می کنم
مثلا اینطوری :
PHP:
public function create_link($title, $url){
    return 'http://'.$_SERVER['HTTP_HOST'].'<a href="'.$url.'">'.$title.'</a>';
}
اینطوری کنترل برنامه بالاتر میره و برای هر تغییر کوچیک مثلا تغییر آدرس لینک ها لازم نیست که همه لینک ها رو ادیت کنید
$_SERVER['HTTP_HOST'] هم آدرس سایت رو بر می گردونه و برای کسانی که می خوان cms درست کنن به کار میاد و دیگه لازم نیست از user آدرس بگیریم !

موفق باشید
 
آخرین ویرایش:

جدیدترین ارسال ها

بالا