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

PDA

View Full Version : شروع استفاده از .htaccess به زبان ساده


Simple Clean
08-15-2006, 06:19 PM
يه كمي مقدمه:
فايلهاي .htaccess يا distributed configuration files كه شايد خيلي ديده باشيد در واقع فايلهاي مخصوص كنترل آپاچي هستن
كه روي يه شاخه و تمام زير شاخه هاي اون عمل مي كنن كه با وجود مورد استفاده بودن كمي محجور موندن . اين فايلها براي كاركرد در كنار فايلهاي معمولي html يا php قرار ميگيرن و نام اونها فقط .htaccess ميتونه باشه ( هر چند كه با دستبردن تو تنظيمات اصلي آپاچي ميشه اسمشونو عوض هم كرد)
اين فايلها از تگهاي مخصوص آپاچي استفاده ميكنن البته cgi script هم مي پذيرن
تو اين پست سعي ميكنم تعداد محدودي از كاربردها رو به زبان ساده بگم
چند تا نكته هست كه بايد بدونيد:
چون ميدونم اكثريت قبل از آپلود واسه انجام كارهاتون از لوكال هاست استفاده ميكنيد بايد بگم كه ويندوز اجازه درست كردن فايل اصلي كه ما واسه فعاليتمون نياز داريم رو نميده چون .htaccess يه فايل بدون نامه !!! اما با اين كد ساده php توي لوكال هاست هم ميتونيم اچتي اكسس رو ايجاد كنيم .

$file=".htaccess";
$fp=fopen($file,"w+");
fwrite($fp,"#is here our htaccess");

و در آخر اينكه اگه يه حرف يا حتي يه space اينور و اونور بزنيد باعث server error ميشه و سايت بالا نمي ياد


كاربرد اول- تغيير صفحات خطا

شما ميتونيد صفحات خطاي 404 يا 500 و ... رو به دلخواه خودتون طراحي و به اين طريق بشناسونيد

ErrorDocument 404 /404.html
ErrorDocument 500 /500.html

توضيح: خيلي واضح هست ErrorDocument xxx /xxx.html

كاربرد دوم-مخفي كردن فرمت ها ، شناساندن فرمتهاي جديد (add mime type)

يك راه امنيتي كه من واقعا پيشنهاد ميكنم واسه حفاظت از اسكريپت هاي php شما اينه كه اونا php نباشن !! بله يعني مثلا asp يا jsp باشن اينطوري هكرا واقعا گيج ميشن

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

توضيح: اول Addtype ميگه كه ما ميخوايم يه فرمت جديد بشناسونيم بعد نوع اون فايلهاي خاص با فرمت دلخواهمونو ميگيم مثلا image/png يا text/css بعد ميگيم كه چه فرمتي رو از اين به بعد به عنوان نوعي كه گفتيم بشناس
اما فرض كنيد ميخوايد از shtml , ssl در سايتتون استفاده كنيد و نياز به شناساندن اين فرمتها به آپاچي داريد :

AddType text/html .shtml
AddHandler server-parsed .shtml
Options Indexes FollowSymLinks Includes


كاربرد سوم - از index.php يا index.html خسته نشديد؟

با اين كد هم ميشه به وب سرور امر كرد كه كدام فايل به عنوان صفحه نخست و به قولي ايندكس به درخواست دهنده فرستاده بشه

DirectoryIndex homearea.php

homearea.php رو به هر فايلي با هر نامي تغيير بديد.
توضيح: خيلي واضح DirectoryIndex يه فاصله و بعد هر نام فايلي با هر فرمتي

كاربرد چهارم - redirect يا برو همونجايي كه من ميگم ...


Redirect /Dirold/old.html http://site.com/DirNew/new.html

توضيح: در اينجا ما ميگيم كه مرورگري كه درخوست فايل old.html رو در شاخه dirold داشت بره به آدرس http://site.com/DirNew/new.html

كاربرد پنجم - تامين امنيت با IndexIgnore

اين يكي ديگه يه شگرد امنيتي خيلي عاليه
درصد بالايي از هكرها بعد از نفوذ با browse كردن در دايركتوريهاي سايت شما و گشتن به دنبال فولدرها يا فايلها با پرميشن مطلوب كارشونو تكميل ميكنن و البته خيلي ها از اول از روش ديد زدن فولدرهايي كه حاوي موتور اسكريپت ها و اطلاعات با ارزشي هستن مثلا فايل config رو در بردارن به سايت نفوذ ميكنن
برنامه نويسا و php كارها واسه جلوگيري از اين كار ميان و يه index.html خالي درست ميكنن اما با اين كد ميشه يه صفحه مربوط به خالي بودن فولدر رو نشون داد يعني هيچي تو اين شاخه نيست در حالي كه شاخه ميتونه پر فايل باشه ...

IndexIgnore *

توضيح: واضحه ديگه ولي اگه مثلا خواستيد فقط يه نوع فايل محافظت شه مثلا فقط فايلهاي pdf مينويسييد :

IndexIgnore application/pdf


كاربرد ششم - DefaultCharset

خسته نشديد از بس بالاي صفحاتتون Charset فارسي (utf-8 يا windows-1256) رو ست كرديد؟ خوب با اين كد كوتاه شما به آپاچي محترم ميگين كه هميشه صفحات رو با يه charset خاصي ارسال كن

AddDefaultCharset utf-8


كاربرد هفتم - deny from all

اين يكي بيشتر واسه فايل هايي به كار ميره كه حاوي اطلاعات با ارزشين ولي محافظت نميشن ( مثلا mt-config.cgi ) اين كد ميگه كه هيچ مرورگر ي نتونه سورس اينها رو ببينه

<Directory />
Order Deny,Allow
Deny from All
</Directory>

البته میشه این دسترسی رو فقط واسه یه آی پی محدود کرد

order allow,deny
deny from 123.45.6.7
deny from 012.34.5.
allow from all


كاربرد هشتم - محدود كردن يك عمليات خاص يا "گور پدر هكرا"

اينم دو تا كد امنيتيه ديگه كه خيلي ميتونه تو دست و پاي هكرا بپيچه

<Limit POST PUT DELETE>
Deny from All
</Limit>

كارش فكر كنم مشخص باشه

<LimitExcept POST GET>
Deny from All
</LimitExcept>

شما به بومبرينگ اعتقاد داريد ؟ اين كد جلوي FSOCKOPEN و جوجه هكرا رو ميگيره

كاربرد نهم - rewrite engine

اول از همه Apache RewriteEngine بايد در وب سرور شما فعال باشه .
اگه دسترسي داريد ميتونيد اين خط رو در httpd.conf اضافه كنيد :

LoadModule rewrite_module modules/mod_rewrite.so

اگرم بهش دسترسي نداريد با توجه به اين كه هاستينگاي ايران همه ريسيلر سوم چهارمن !!! اين كد هم شايد بتونه كار كنه بايد تو همون اچتي اكسس كپي كنيد


<IfDefine ReverseProxy>
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule proxy_module modules/libproxy.so
</IfDefine>


اگه از easyphp يا xampp واسه لوكال استفاده ميكنيد از سرچ ويندوز واسه پيدا كردن فايل httpd.conf استفاده كنيد و بعد همون خط رو بش اضافه كنيد.

اين همون چيزيه كه واسه ساب دومين مجازي هم به كار ميبريم من يه مثال سادشو واستون ميزنم
فرض كنيد يه وبلاگ داشتيد با اين آدرس http://www.persiantools.com/ehsan
حالا بلاگتون آدرسش عوض شده به اين http://www.persiantools.com/knowhow
البته دقت داشته باشيد اين هيچ ربطي به redirct نداره

RewriteEngine on
RewriteRule ^ehsan(/.*)?$ /knowhow$1 [R=permanent]

واسه Virtual Subdomain هم به يه كاراي اضافه اي مثل catch all subdomain و کمی php نياز داريم كه بعدا طريقشو ميگم...

peiman
08-15-2006, 06:33 PM
ممنون
عال بود
من عضو اين تاپيك شدم

Simple Clean
08-15-2006, 06:36 PM
ضمنا بخشید دو تا تاپیک شد اشتباه لپی بود

first saeed
08-15-2006, 07:35 PM
ممنون- اطلاعات خیلی بدرد بخوری هست . دستت درد نکنه

farbod_123
08-15-2006, 07:45 PM
مخسیییییی جیییییگر

Mehdi
08-15-2006, 08:16 PM
عالی http://qsmile.com/qsimages/8.gif
اجازه هست بفرستمش قسمت آموزش؟

artin
08-15-2006, 08:39 PM
عالی http://qsmile.com/qsimages/8.gif
اجازه هست بفرستمش قسمت آموزش؟

اگه بره اونجا که خیلی خوب میشه
پست های اضافه رو هم پاک کن

یه آموزش کامل rewrite هم با همین باشه دیگه تکمیل میشه

Simple Clean
08-15-2006, 08:54 PM
هر جور صلاح میدونین ...
ان شائ الله یه سری دیگم اضافه میشه

Sayrex
08-15-2006, 09:19 PM
خیلی عالیه . با ذکر منبع مشکلی نیست در جای دیگه هم گذاشته بشه که ؟!:)

khodavandbozorg
08-15-2006, 09:46 PM
عالی بود !
در مورد php_flag ها هم بنویسی بد نیس !:D اونا هم توی این فایل دوست داشتی قرار داده میشن و با یه فایل htaccess کل هاستمون ( حتی اگه خریدار رده چندم هم باشیم ) در اختیار خودمونه !

البته فکر کنم که برای اعمال شدین این تغییرات در متور پی اچ پی باید پی اچ پی به صورت ماژول لود شده باشه نه به صورت cgi یا fast cgi درسته ؟!
من به شدت به این مبحث علاقه دارم ولی فقط یه مقدار کم و ناقص اطلاعات دارم و خوشحال میشم که با هم این مبحث رو کامل کنیم !
اگه بتونم کمک کنم !

amnhak
08-16-2006, 01:05 AM
خسته نباشید.
من خیلی وقت بود میخواستم همچین چیزی رو تهیه کنم که شما زحمتش رو کشید.
واقعا استفاده بردیم.

peiman
08-16-2006, 04:33 PM
چقدر اينا كه ميگي شبيه httpd.conf هستند
ربطي به هم دارن؟
در مورد اون فايل هم ميتوني توضيح بدي؟

Simple Clean
08-16-2006, 06:18 PM
چقدر اينا كه ميگي شبيه httpd.conf هستند
ربطي به هم دارن؟
در مورد اون فايل هم ميتوني توضيح بدي؟

در واقع .htaccess همون httpd.conf هستش مثه یه shortcut با این تفاوت که فقط روی یه پوشه و زیرشاخه هاش عمل میکنن ضمنا
خیلی از دستورات httpd.conf تو htaccess قابل اجرا نیستند.

در مورد php_flag ها هم بنویسی بد نیس ! اونا هم توی این فایل دوست داشتی قرار داده میشن و با یه فایل htaccess کل هاستمون ( حتی اگه خریدار رده چندم هم باشیم ) در اختیار خودمونه !

منم بیشتر از شما نمیدونم ولی به چشم ...

خیلی عالیه . با ذکر منبع مشکلی نیست در جای دیگه هم گذاشته بشه که ؟!

باعث افتخاره جناب sayrex ماشاء الله شما تو هفتاد هشتاد فروم فعالی ها

ali-boofaloo
10-11-2006, 12:06 AM
میشه توضیح بدین که پرشین تولز چه جوری html شده؟

V65j
10-12-2006, 09:34 PM
آموزش خیلی به درد بخوری بود . ممنون
واسه Virtual Subdomain هم به يه كاراي اضافه اي مثل catch all subdomain و کمی php نياز داريم كه بعدا طريقشو ميگم.
جالبه این جریان اگه می شه یکم عجله کنین . خیلی مشتاقم
میشه توضیح بدین که پرشین تولز چه جوری html شده
یه نگاهی به اینجا (http://forum.persiantools.com/t55071.html)بنداز
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^blog/([0-9]+)-([a-z]+) http://Persiandev.net/blog/index.php?archive=$1-$2 [nc]
یه نگاهی به این بندازی می فهمی

saeed_19_karaj
10-17-2006, 05:25 PM
بابا دمت گرم من که خیلی حال کردم

ایولا

من تا الان نمیدونستم htaccess برای چی هست http://qsmile.com/qsimages/286.gif http://qsmile.com/qsimages/286.gif http://qsmile.com/qsimages/286.gif http://qsmile.com/qsimages/286.gif

Ames
10-18-2006, 02:21 AM
htaccess فقط واسه آپاچیه؟ برای IIS سیستم مشابهی وجود نداره؟

saeed_19_karaj
10-21-2006, 05:34 PM
يه كمي مقدمه:
فايلهاي .htaccess يا distributed configuration files كه شايد خيلي ديده باشيد در واقع فايلهاي مخصوص كنترل آپاچي هستن
كه روي يه شاخه و تمام زير شاخه هاي اون عمل مي كنن كه با وجود مورد استفاده بودن كمي محجور موندن . اين فايلها براي كاركرد در كنار فايلهاي معمولي html يا php قرار ميگيرن و نام اونها فقط .htaccess ميتونه باشه ( هر چند كه با دستبردن تو تنظيمات اصلي آپاچي ميشه اسمشونو عوض هم كرد)
اين فايلها از تگهاي مخصوص آپاچي استفاده ميكنن البته cgi script هم مي پذيرن
تو اين پست سعي ميكنم تعداد محدودي از كاربردها رو به زبان ساده بگم
چند تا نكته هست كه بايد بدونيد:
چون ميدونم اكثريت قبل از آپلود واسه انجام كارهاتون از لوكال هاست استفاده ميكنيد بايد بگم كه ويندوز اجازه درست كردن فايل اصلي كه ما واسه فعاليتمون نياز داريم رو نميده چون .htaccess يه فايل بدون نامه !!! اما با اين كد ساده php توي لوكال هاست هم ميتونيم اچتي اكسس رو ايجاد كنيم .

$file=".htaccess";
$fp=fopen($file,"w+");
fwrite($fp,"#is here our htaccess");

و در آخر اينكه اگه يه حرف يا حتي يه space اينور و اونور بزنيد باعث server error ميشه و سايت بالا نمي ياد


سلام دوست عزیز من متوجه نمیشم تو کجا باید این کد را بزنیم؟

باید صفحه ای درست کنیم؟

خواهشا بیشتر توضیح بدید:blink:

first saeed
10-21-2006, 07:20 PM
سلام دوست عزیز من متوجه نمیشم تو کجا باید این کد را بزنیم؟

باید صفحه ای درست کنیم؟

خواهشا بیشتر توضیح بدید:blink:

یه فایل بنام htaccess. (البته اگه وب سرورت آپاچی باشه) روی هاستت وجود داره که باید این کدها رو توی اون وارد کنی و Save کنی

saeed_19_karaj
10-21-2006, 09:31 PM
یه فایل بنام htaccess. (البته اگه وب سرورت آپاچی باشه) روی هاستت وجود داره که باید این کدها رو توی اون وارد کنی و Save کنی

خوب این فایل بی نام هست با چه ادیتوری باز کنم و تو فایل اضافه کنم؟

first saeed
10-21-2006, 09:38 PM
با notepad یا zend

IranSpirit
11-10-2006, 05:43 PM
htaccess فقط واسه آپاچیه؟ برای IIS سیستم مشابهی وجود نداره؟

با خود asp.net و asp میتونی کارشو انجام بدی.

Helen_Farhani
07-16-2007, 01:06 PM
با خود asp.net و asp میتونی کارشو انجام بدی.

حالا اگر برنامه ما با PHP باشه چي؟

vaheb
12-04-2007, 10:44 PM
با خود asp.net و asp میتونی کارشو انجام بدی.
میشه توضیح بدی چجوری ؟؟؟؟؟؟؟؟؟؟؟

hamid67fathi
02-09-2009, 04:03 PM
سلام
اين فايل htaccess رو کجا بايد بزاريم ؟؟
جاش کجاست ؟؟

TruthPraiser
02-09-2009, 05:31 PM
تو root سایت یا هر پوشه ای که می خواین محدودیت ها یا ویژگی هایی که مایل هستین روش اعمال بشه.

samic
09-22-2009, 10:23 AM
سلام
من می‌خوام از htaccess استفاده کنم تا مثلا آدرس http://www.chalyavi.com/130 به http://www.chalyavi.com/?id=130 منتقل بشه
از دستور زیر استفاده کردم:

RewriteEngine On
RewriteRule ^([0-9]+)$ http://www.chalyavi.com/?id=$1
RewriteRule ^([0-9]+)/$ http://www.chalyavi.com/?id=$1

اما اتفاقی که می‌افته اینه که وقتی اون آدرس کوچک شده رو میزنم خود سرور آدرس رو به آدرس بزرگ تبدیل می‌کنه و آدرس بالای صفحه اتومات میشه http://www.chalyavi.com/?id=130 !!!

پس الان htaccess من داره کار میکنه اما مثل redirect برنامه نویسی (مثلا asp با javascript) عمل میکنه!

کجای کارم ایراد داره؟

balabala
09-22-2009, 12:39 PM
سلام

من می‌خوام از htaccess استفاده کنم تا مثلا آدرس http://www.chalyavi.com/130 به http://www.chalyavi.com/?id=130 منتقل بشه
از دستور زیر استفاده کردم:

RewriteEngine On
RewriteRule ^([0-9]+)$ http://www.chalyavi.com/?id=$1
RewriteRule ^([0-9]+)/$ http://www.chalyavi.com/?id=$1

اما اتفاقی که می‌افته اینه که وقتی اون آدرس کوچک شده رو میزنم خود سرور آدرس رو به آدرس بزرگ تبدیل می‌کنه و آدرس بالای صفحه اتومات میشه http://www.chalyavi.com/?id=130 !!!

پس الان htaccess من داره کار میکنه اما مثل redirect برنامه نویسی (مثلا asp با javascript) عمل میکنه!


کجای کارم ایراد داره؟


RewriteEngine On
RewriteBase /

RewriteRule ^([0-9]+)$ index.php?id=$1
RewriteRule ^([0-9]+)/$ index.php?id=$1

این کار میکنه؟
شاید قبلش دستوری گذاشتید که اینها رو غیر معتبر میکنه.

samic
09-22-2009, 01:53 PM
ایول آقا درست شد!!!

این RewriteBase / جادویی چی بود؟!!!

مرسی خیلی ممنون

mo_dashti1
10-11-2009, 02:48 AM
من یکسری پوشه دارم که توش یه تعداد فایل واسه دانلود موجوده، می خوام کاری کنم که بدون لاگین کردن نتونن دانلود کننشون. می خواستم بدونم با htaccess یا چیز دیگه ای امکان پذیره ؟
مثلا یه همچین لینکی دارم :
http://mysite/library/new.zip

شادمهر
11-25-2009, 06:42 PM
سلام:

آقا آيا با استفاده از فايل htaccess ميشه كاري كرد كه اگه كسي دامنه‌ي رو سرچ كرد به دامنه ديگر منتقل بشه ؟ مثلا كاربري دامنه www.patogh4u.org رو سرچ مي‌كنه ولي به دامنه‌ی www.patogh4u.net منتقل بشه ؟ امكانش هست؟ اگر هست لطفا كدش رو قرار بدين . ممنون از شما