آژانس هواپیمایی
pop up

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

شروع موضوع توسط neo2 ‏8 ژانویه 2008 در انجمن PHP

  1. neo2

    neo2 Registered User

    تاریخ عضویت:
    ‏8 آپریل 2005
    نوشته ها:
    1,645
    تشکر شده:
    178
    محل سکونت:
    /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
     
  2. neo2

    neo2 Registered User

    تاریخ عضویت:
    ‏8 آپریل 2005
    نوشته ها:
    1,645
    تشکر شده:
    178
    محل سکونت:
    /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\.htmlindex.php [L]
     
  3. neo2

    neo2 Registered User

    تاریخ عضویت:
    ‏8 آپریل 2005
    نوشته ها:
    1,645
    تشکر شده:
    178
    محل سکونت:
    /cat/etc/passwd/
    اینم کدی که به جای فایل روت سایت فایل دلخواه شما رو نشون میده.

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

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

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

    Shahed Registered User

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

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

    TehranNet کاربر فعال فوتبال کاربر فعال

    تاریخ عضویت:
    ‏12 آپریل 2006
    نوشته ها:
    4,446
    تشکر شده:
    540
    محل سکونت:
    Tehran
    سلام
    این فقط برای روت هست؟
    اگر بخواهیم کل فایلهای php به صورت html خوانده شود چیکارباید بکنیم؟
     
  6. متالیک

    متالیک Registered User

    تاریخ عضویت:
    ‏31 مارس 2007
    نوشته ها:
    1,938
    تشکر شده:
    59
    سلام
    فکر می کنم آموزش htaccess تو همین فروم موجود باشه
     
  7. boxilink
  8. Shahed

    Shahed Registered User

    تاریخ عضویت:
    ‏30 ژوئن 2003
    نوشته ها:
    7,175
    تشکر شده:
    21
    محل سکونت:
    mt.cgi
    بله !! و اینجور مثال ها بیش از 20 بار گذاشته شده !!
     
  9. neo2

    neo2 Registered User

    تاریخ عضویت:
    ‏8 آپریل 2005
    نوشته ها:
    1,645
    تشکر شده:
    178
    محل سکونت:
    /cat/etc/passwd/
    اونو خودم هم نمی دونم !!

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

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

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

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

    neo2 Registered User

    تاریخ عضویت:
    ‏8 آپریل 2005
    نوشته ها:
    1,645
    تشکر شده:
    178
    محل سکونت:
    /cat/etc/passwd/
    اینم یه کد هست مخصوص کسانی که با global register مشکل دارن.

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

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

    PHP:
    php_flag register_globals off
     
  11. neo2

    neo2 Registered User

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

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

    neo2 Registered User

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

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

    neo2 Registered User

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

    PHP:
    AddDefaultCharset utf-8
     
  14. avajang.com .leftavajang.com.right
  15. siavashmusic

    siavashmusic Registered User

    تاریخ عضویت:
    ‏6 فوریه 2005
    نوشته ها:
    1,206
    تشکر شده:
    1
    محل سکونت:
    بندرانزلی
  16. neo2

    neo2 Registered User

    تاریخ عضویت:
    ‏8 آپریل 2005
    نوشته ها:
    1,645
    تشکر شده:
    178
    محل سکونت:
    /cat/etc/passwd/
    دستت درد نکنه. متشکر ;)
     
  17. space-man

    space-man Registered User

    تاریخ عضویت:
    ‏21 ژوئن 2004
    نوشته ها:
    31
    تشکر شده:
    0
    این htaccess دنیایی داره...
    حتما وب مستر ها یاد بگیرن
     
  18. firebird

    firebird Registered User

    تاریخ عضویت:
    ‏2 جولای 2005
    نوشته ها:
    1,424
    تشکر شده:
    9
    با ForceType
     
  19. neo2

    neo2 Registered User

    تاریخ عضویت:
    ‏8 آپریل 2005
    نوشته ها:
    1,645
    تشکر شده:
    178
    محل سکونت:
    /cat/etc/passwd/
    همونطوری که عرض کردم خدمتتون برای کل صفحات یه خورده فرق داره. آخرین بار یه سیستم کامرس رو SEO کردم و این

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

    به این شکل :

    PHP:
    Options +FollowSymLinks
    RewriteEngine On 
    RewriteBase 
    /

    RewriteRule ^(.*)-p-(.*).htmlproduct_info.php?products_id=$2&%{QUERY_STRING}
    RewriteRule ^(.*)-c-(.*).htmlindex.php?cPath=$2&%{QUERY_STRING}
    RewriteRule ^(.*)-m-(.*).htmlindex.php?manufacturers_id=$2&%{QUERY_STRING}
    RewriteRule ^(.*)-pi-(.*).htmlpopup_image.php?pID=$2&%{QUERY_STRING}
    RewriteRule ^(.*)-t-(.*).htmlarticles.php?tPath=$2&%{QUERY_STRING}
    RewriteRule ^(.*)-a-(.*).htmlarticle_info.php?articles_id=$2&%{QUERY_STRING}
    RewriteRule ^(.*)-pr-(.*).htmlproduct_reviews.php?products_id=$2&%{QUERY_STRING}
    RewriteRule ^(.*)-pri-(.*).htmlproduct_reviews_info.php?products_id=$2&%{QUERY_STRING}
    RewriteRule ^(.*)-i-(.*).htmlinformation.php?info_id=$2&%{QUERY_STRING}
    RewriteRule ^(.*)-links-(.*).htmllinks.php?lPath=$2&%{QUERY_STRING}
    کمکی خواستید در خدمتم.
     
  20. TehranNet

    TehranNet کاربر فعال فوتبال کاربر فعال

    تاریخ عضویت:
    ‏12 آپریل 2006
    نوشته ها:
    4,446
    تشکر شده:
    540
    محل سکونت:
    Tehran
    در خط اول عبارت (.*)-p-(.*) وجود داره

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

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

    neo2 Registered User

    تاریخ عضویت:
    ‏8 آپریل 2005
    نوشته ها:
    1,645
    تشکر شده:
    178
    محل سکونت:
    /cat/etc/passwd/
    معنی این خط اینه. میاد این فایل رو product_info.php به این رایت میکنه :

    PHP:
    http://localhost/-c-21.html
    اون 21 هم شماره کتگوری هست که گذتشتم با یه Query بهش اضافه بشه و متغییر هست.
     
  22. TehranNet

    TehranNet کاربر فعال فوتبال کاربر فعال

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

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