برگزیده های پرشین تولز

مرجع کدهای هیت اکسس htaccess ( آموزش )

neo2

Registered User
تاریخ عضویت
8 آپریل 2005
نوشته‌ها
1,667
لایک‌ها
184
محل سکونت
/cat/etc/passwd/
سلام به همه دوستان.
من خودم همیشه با htaccess مشکل داشتم و پوستم کنده شد تا تونستم دستورات مختصری ازش یاد بگیرم.
موضوعات مربوط به این بحث خیلی پراکنده هستن و اکثرا به زبان فارسی هم نیست.
کمبود همچین تاپیکی تو بخش php حس میشد و چون بنده خودم خیلی چیزا از اساتید اینجا یاد گرفتم، تصمیم به باز کردن
این تاپیک گرفتم.
ایشالا بتونیم یه مرجع مناسبی واسه کار با htaccess و دستورات مربوط به اون اینجا جمع آوری کنیم.
از مدیران هم تقاضا میکنم حواس این تاپیک رو داشته باشن ;) و تجربیاتشون رو به بقیه هم منتقل کنن.


آموزش :

فايل هايhtaccess يا distributed configuration files كه شايد خيلي ديده باشيد در واقع فايل هاي مخصوص كنترل آپاچي هستند و روي یک شاخه و تمام زير شاخه هاي آن عمل مي كنند ولی با وجود مهم بودن آن کمتر مورد توجه قرار می گیرد.
اين فايل ها براي كاركردن در كنار فايل هاي معمولي html يا php قرار مي گيرند و نام آن ها فقط .htaccess می تواند باشد ( برای تغییر نام این فایل ها می توان با تغییردر تنظیمات اصلی Apache این عمل را انجام داد) .
اين فايل ها از تگ هاي مخصوص آپاچي استفاده مي كنند البته cgi script هم مي پذيرند.

چند نكته :
در ويندوز امکان ایجاد فايل اصلي كه ما برای اعمالمان نياز داريم وجود ندارد زیرا .htaccess یک فايل بدون نام است!!! اما با اين كد ساده php در لوكال هاست هم می توانیم htaccess را ايجاد كنيم.
نکته دیگر این که حساسیت این فایل بی اندازه مهم می باشد به طوری که اگر در داخل این فایل یک حرف بی معنی بنویسید سبب server error شده و وب سایت شما دیگر لود نمی شود!

کاربردهای این فایل:

1- تغيير صفحات خطا
شما می توانید صفحات خطاهای مختلف(404,500,...) را به دلخواه خودتان طراحی کنید و زمانی که کاربر صفحاتی که دارای این خطاها هستند را دارد مشاهده می کند به جای یک صفحه خالی متن شما را ببنید.

شکل کلی:
ErrorDocument xxx /xxx.html
 

neo2

Registered User
تاریخ عضویت
8 آپریل 2005
نوشته‌ها
1,667
لایک‌ها
184
محل سکونت
/cat/etc/passwd/
خوب اولی رو خودم شروع میکنم. ;)

اولین کد مربوط به سیستم SEO هست. در این روش شما میتونید فایل روت دایرکتوری تون که php هست رو به HTML

تبدیل کنید. مثال : www.marketiran.com/index.php تبدیل میشه به www.marketiran.com/index.html


اینم کد : البته فراموش نشه که rewrite rule سرور باشد on باشه. اگه نبود با مدیر سرورتون صحبت کنید on میکنه.

PHP:
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^(.*).html$ $1.php [nc]


استفاده از این یکی هم توصیه میشه :

PHP:
RewriteEngine On
RewriteRule ^index\.html$ index.php [L]
 

neo2

Registered User
تاریخ عضویت
8 آپریل 2005
نوشته‌ها
1,667
لایک‌ها
184
محل سکونت
/cat/etc/passwd/
اینم کدی که به جای فایل روت سایت فایل دلخواه شما رو نشون میده.

PHP:
DirectoryIndex myfile.php

شما با اينكار به آپاچي ميگيد كه ديگه از اين به بعد هر دايركتوري رو كه نشون ميدي اول دنبال اين فايل myfile.php بگرده اگر بود اجرا كن اگر نبود به صورت پيشفرض دايركتوري ليستينگ نشون داده ميشه.

براي جلوگيري از دايركتوري ليستينگ توي تمام فولدرهاي استاندارد ماي بي بي، يك فايل ايندكس اچ تي ام ال وجود داره. اينكار همه ي اونها رو به صورت پتانسيلي از كار ميندازه
اگر ميخوايد مثل اين سايت وقتي آدرس خام دامينتون صدا زده ميشه (mybboard.ir/ بدون index.php) صفحه ي پرتال نشون داده بشه بهترين كار اينه كه از اين كد استفاده كنيد تا با مود ريرايت آپاچي اين كار هندل بشه.

PHP:
RewriteRule ^/?$ portal.php [l,QSA]
 

Shahed

کاربر قدیمی پرشین تولز
تاریخ عضویت
30 ژوئن 2003
نوشته‌ها
7,270
لایک‌ها
34
محل سکونت
mt.cgi
یخورده عمقی تر توضیح میدی؟ این مدل کدهای آماده برای ریرایت وغیره رو که سرچ کنی هزار مدل میریزه !!

مثلا FllowSymlink یعنی چی؟
یا مثلا اون [nc] آخر برای چیه؟
 

TehranNet

کاربر فعال فوتبال
کاربر فعال
تاریخ عضویت
12 آپریل 2006
نوشته‌ها
4,466
لایک‌ها
561
سن
34
محل سکونت
Tehran
خوب اولی رو خودم شروع میکنم. ;)

اولین کد مربوط به سیستم SEO هست. در این روش شما میتونید فایل روت دایرکتوری تون که php هست رو به HTML

تبدیل کنید. مثال : www.marketiran.com/index.php تبدیل میشه به www.marketiran.com/index.html


اینم کد : البته فراموش نشه که rewrite rule سرور باشد on باشه. اگه نبود با مدیر سرورتون صحبت کنید on میکنه.

PHP:
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^(.*).html$ $1.php [nc]

سلام
این فقط برای روت هست؟
اگر بخواهیم کل فایلهای php به صورت html خوانده شود چیکارباید بکنیم؟
 

متالیک

کاربر قدیمی پرشین تولز
کاربر قدیمی پرشین تولز
تاریخ عضویت
31 مارس 2007
نوشته‌ها
2,128
لایک‌ها
285
سلام
فکر می کنم آموزش htaccess تو همین فروم موجود باشه
 

neo2

Registered User
تاریخ عضویت
8 آپریل 2005
نوشته‌ها
1,667
لایک‌ها
184
محل سکونت
/cat/etc/passwd/
یخورده عمقی تر توضیح میدی؟ این مدل کدهای آماده برای ریرایت وغیره رو که سرچ کنی هزار مدل میریزه !!

مثلا FllowSymlink یعنی چی؟
یا مثلا اون [nc] آخر برای چیه؟

اونو خودم هم نمی دونم !!

سلام
این فقط برای روت هست؟
اگر بخواهیم کل فایلهای php به صورت html خوانده شود چیکارباید بکنیم؟

اگه بخوایید کل سایت رو SEO کنید بستگی به اسکریپت ای داره که استفاده می کنید. اونجوری یه کم تخصصی میشه! کاری که الان

سایت ایران سئو داره انجام میده.

بله !! و اینجور مثال ها بیش از 20 بار گذاشته شده !!

خوب دسته بندی بشن و یه جای مشخص باشن بهتره. برای شما شاید 20 باره باشه ولی برای بعضی ها ممکنه اولین بار باشه ;)

حالا یه بار اومدیم یه حرکت ورزشی از خودمون درکنیم شاهد نمی ذاره ! :D
 

neo2

Registered User
تاریخ عضویت
8 آپریل 2005
نوشته‌ها
1,667
لایک‌ها
184
محل سکونت
/cat/etc/passwd/
اینم یه کد هست مخصوص کسانی که با global register مشکل دارن.

این کد register_globals رو on میکنه :

PHP:
php_flag register_globals on

عکس هم اینه دیگه واسه خاموش کردن :lol:

PHP:
php_flag register_globals off
 

neo2

Registered User
تاریخ عضویت
8 آپریل 2005
نوشته‌ها
1,667
لایک‌ها
184
محل سکونت
/cat/etc/passwd/
این هم یک کد امنیتی برای حفاظت از فایل های php البته نه بطور کامل !
این کد پسوند فایل های شما رو در ظاهر به .asp .jsp تغیر میده و کار رو برای شناسائی فرمت اصلی اسکریپت مشکل تر می کنه. نه اینکه کاملا شناسائی نشه ولی به سادگی هم شناسایی نمیشه !

PHP:
AddType application/x-httpd-php .asp .jsp
 

neo2

Registered User
تاریخ عضویت
8 آپریل 2005
نوشته‌ها
1,667
لایک‌ها
184
محل سکونت
/cat/etc/passwd/
با این کد هم تو htaccess میتونید برای خطاي 404 يا 500 و ... به دلخواه یه صفحه طراحی کنید و وقتی اون خطاها رخ داد صفحه خودتون رو نمایش بدید.

PHP:
ErrorDocument 404 /404.html
ErrorDocument 500 /500.html
 

neo2

Registered User
تاریخ عضویت
8 آپریل 2005
نوشته‌ها
1,667
لایک‌ها
184
محل سکونت
/cat/etc/passwd/
این یکی برای کسایی که برنامه نویسی می کنن مناسب هست.
با این کد میتونید به آپاچی بگید که همیشه صفحات تون رو با اون charset خاص (utf-8 يا windows-1256) ارسال كنه !! ;)

PHP:
AddDefaultCharset utf-8
 

space-man

Registered User
تاریخ عضویت
21 ژوئن 2004
نوشته‌ها
31
لایک‌ها
0
این htaccess دنیایی داره...
حتما وب مستر ها یاد بگیرن
 

neo2

Registered User
تاریخ عضویت
8 آپریل 2005
نوشته‌ها
1,667
لایک‌ها
184
محل سکونت
/cat/etc/passwd/
سلام
این فقط برای روت هست؟
اگر بخواهیم کل فایلهای php به صورت html خوانده شود چیکارباید بکنیم؟

همونطوری که عرض کردم خدمتتون برای کل صفحات یه خورده فرق داره. آخرین بار یه سیستم کامرس رو SEO کردم و این

کارو روش انجام دادم. متناظر با هر صفحه ای که کاربرد داره ( محصولت توش معرفی میشن، حالا چه دسته بندی ها و چه خود محصولات ) فایل HTML درست کردم.

به این شکل :

PHP:
Options +FollowSymLinks
RewriteEngine On 
RewriteBase /

RewriteRule ^(.*)-p-(.*).html$ product_info.php?products_id=$2&%{QUERY_STRING}
RewriteRule ^(.*)-c-(.*).html$ index.php?cPath=$2&%{QUERY_STRING}
RewriteRule ^(.*)-m-(.*).html$ index.php?manufacturers_id=$2&%{QUERY_STRING}
RewriteRule ^(.*)-pi-(.*).html$ popup_image.php?pID=$2&%{QUERY_STRING}
RewriteRule ^(.*)-t-(.*).html$ articles.php?tPath=$2&%{QUERY_STRING}
RewriteRule ^(.*)-a-(.*).html$ article_info.php?articles_id=$2&%{QUERY_STRING}
RewriteRule ^(.*)-pr-(.*).html$ product_reviews.php?products_id=$2&%{QUERY_STRING}
RewriteRule ^(.*)-pri-(.*).html$ product_reviews_info.php?products_id=$2&%{QUERY_STRING}
RewriteRule ^(.*)-i-(.*).html$ information.php?info_id=$2&%{QUERY_STRING}
RewriteRule ^(.*)-links-(.*).html$ links.php?lPath=$2&%{QUERY_STRING}

کمکی خواستید در خدمتم.
 

TehranNet

کاربر فعال فوتبال
کاربر فعال
تاریخ عضویت
12 آپریل 2006
نوشته‌ها
4,466
لایک‌ها
561
سن
34
محل سکونت
Tehran
در خط اول عبارت (.*)-p-(.*) وجود داره

(.*) اولی برابر با کدوم عبارت میباشد؟
(.*)دوم برابر با کدوم عبارت میباشد؟

این دو یکی هستند
(.*)-p-(.*) یعنی به عنوان مثال هر چی قبل از -p- اومده بعدش هم بیاد؟
 

neo2

Registered User
تاریخ عضویت
8 آپریل 2005
نوشته‌ها
1,667
لایک‌ها
184
محل سکونت
/cat/etc/passwd/
در خط اول عبارت (.*)-p-(.*) وجود داره

(.*) اولی برابر با کدوم عبارت میباشد؟
(.*)دوم برابر با کدوم عبارت میباشد؟

این دو یکی هستند
(.*)-p-(.*) یعنی به عنوان مثال هر چی قبل از -p- اومده بعدش هم بیاد؟

معنی این خط اینه. میاد این فایل رو product_info.php به این رایت میکنه :

PHP:
http://localhost/-c-21.html

اون 21 هم شماره کتگوری هست که گذتشتم با یه Query بهش اضافه بشه و متغییر هست.
 

TehranNet

کاربر فعال فوتبال
کاربر فعال
تاریخ عضویت
12 آپریل 2006
نوشته‌ها
4,466
لایک‌ها
561
سن
34
محل سکونت
Tehran
یه سوال دیگه
اگر بخوام دایرکتوری www.mysite.com/new به شکل http://new.mysite.com اجرا بشه چیکار کنم؟

یعنی در واقع فایلها در www.mysite.com/new باشه ولی به صورت new.mysite.com که فراخوانی میشه خونده بشه
 
بالا