# زبان های اسکریپتی > PHP > تاپیک های آموزشی و دنباله دار >  ترفندهای .htaccess

## رضا قربانی

با سلام خدمت تمامی دوستان برنامه نویس

امروزه بیشتر برنامه نویس های حرفه ای  به سراغ فایل htaccess می رن چون بسیار امنیتی و شیرین هست و منم این مطلب بسیار جالب رو توی نت پیدا کردم که گفتم در اختیار شما بگذارم  :خجالت: 

برای شروع فکر میکنم همه بدونید که فايل .htaccess يا Distributed  Configuration Files  در واقع فايلهاي مخصوص كنترل آپاچي هست مکان خاصی  ندارند روی هر شاخه و زیر شاخه تاثیر میزاره در واقع در کنار فایل های  معمولی مثل php ,html قرار میگیره یعنی کاملا در دسترس هستند نام این فایل  ها  .htaccess  هست یعنی صرفا همین -البته میشه یه سری تنظیمات رو دستکاری  کرد و نام رو تغییر داد- اين فايلها از تگهاي مخصوص آپاچي استفاده ميكنن  البته cgi script هم مي پذيرن 

کاربردها :


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

برای نمایش صفحات خطا مثل  404 يا 500 و ... میتونید صفحات دلخواه خودتون رو طراحي و به اين طريق نمایش بدید
مسلما خیلی حرفه ای هست وب سایت هایی که برای کوچکترین موارد پیش بینی صورت بگیره

     کد:
  ErrorDocument 404 /404.html 
ErrorDocument 500 /500.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 *كاربرد سوم- redirect ریدایرکت* 

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

دوستانی که در زمینه SEO فعالیت دارند میدونند که این ریدایرکت چقدر موثره 

*كاربرد چهارم -  IndexIgnore* 

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

خیلی جالبه الان میتونم چندتا سایت پربازدید رو معرفی کنم که این مشکل رو  دارند نکته خیلی جالبتر اینه که من مدتی پیش یک اسکریپت به دستم رسید داشتم  ویرایشش میکردم و توابع اسمارتی رو بررسی میکردم که دیدم چندتا فایل کم  هست یعنی چندتا صفحه نافص بود هرچقدذر نوشتم نتونستم اتصالات رو پیدا کنم  تا اینکه برای تست رفتم وارد سایت تولید کننده این نرم افزار شدم از  اونجایی که نسخه دمو روی سرور Run شده بود رفتم به دایرکتوری موردنظر با  کمال تعجب دسترسی در پوشه تمپلیت مربوط به فایل های TPL باز بود منم با  کمال لطف فایل های موردنظر رو برداشتم به همین راحتی 

شاید در ظاهر استفاده از این طرفند خیلی پیش پا افتاده باشه اما میدونم خیلی از افراد به آسونی از کنارش میگذرند

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

     کد:
IndexIgnore application/pdf  *
كاربرد پنجم - از index.php يا index.html خسته نشديد؟* 

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

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

*كاربرد ششم - DefaultCharset* 

بسیاری از مشکلات دوستان نمایش انکودینگ صفحات اینترنتی هست با دستور زیر  میتونید آپاچی رو مقید کنید تا 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> 
</Limit> 
کارش که مشخصه فکر کنم

     کد:
<LimitExcept POST GET> 
</LimitExcept> 
شما به بومبرينگ اعتقاد داريد ؟ اين كد جلوي FSOCKOPEN رو میگیره 

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

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

     کد:
LoadModule rewrite_module modules/mod_rewrite.so  اگرم بهش دسترسي نداريد اين كد هم شايد بتونه كار كنه بايد تو همون htaccess كپي كنيد 

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

اين همون چيزيه كه واسه ساب دومين مجازي هم به كار ميبريم من يه مثال سادشو واستون ميزنم 
فرض كنيد يه وبلاگ داشتيد با اين آدرس http://www.ABC.com/ABC 
حالا بلاگتون آدرسش عوض شده به اين http://www.ABC.com/AAAAA 
البته دقت داشته باشيد اين هيچ ربطي به redirct نداره 
**این مورد رو دوستانی که به SEO وارد هستند میتونند متوجه بشن که ریدایرکت  با ریرایت خیلی فرق داره از نظر نتیجه ای که در اینده برای ما در برخواهد  داشت

     کد:
RewriteEngine on 
RewriteRule ^AAAA(/.*)?$ /ABC$1 [R=permanent] 
یکی از بهترین امکاناتی که اپاچی بهتون میده بهش mod_rewrite هستش که  باعث میشه سایتتون خیلی تمیزتر بنظر بیاد و به عبارتی SEO بشه !!! 
تو هرجایی که شما بخواید از mod_rewrite استفاده کنید نیاز دارید که کد 

     کد:       Options +FollowSymlinks 
 RewriteEngine onرو در فایل تون قرار بدید 
بزارید یک مثال بزنم , میخوایم تمام صفحات php رو تبدیل کنیم به html : 

     کد:
      Options +FollowSymlinks 
 RewriteEngine on 
 RewriteRule ^(.*).htm$ $1.php [nc] 
در دستور بالا ما گفتیم هر فایل  php بود تبدیلش کن به .htm ولی این  دلیل براین نیست که فرمت فایل عوض میشه نه!!! بلکه به هردو صورت دسترسی به  فایل امکان پذیر هست برای مثال اگه یه فایل test.php داشته باشیم هم  میتونیم با اسم test.htm بهش دسترسی پیدا کنیم و هم از test.php . 
[nc] : این دستور یعنی No Case یا همون case-insensitive 

فرض میکنیم اسم دومینمون رو عوض کردیم ولی فایل هامون همون قبلی ها هستن و  میخوایم هرکسی تو دومین اولی یک فایل رو فراخوانی کرد ما همون فایل رو تو  دومین دوم صدا بزنیم اینجور عمل میکنیم : 


     کد:
Options +FollowSymlinks 
 rewriteengine on 
 rewriterule ^(.+).htm$ http://mehr-design.ir/$1.php [r=301,nc] 
301 یعنی مستقیما ریدایرکت شده , دستور بالا زمانی خوبه که یه سایت  قدیمی داریم حالا میخوایم update کنیم این کار باعث میشه موتورهای جستجوگر  نتایج ما رو اتوماتیک آپدیت کنند

اینجا رو ببینید »

     کد:
Options +FollowSymlinks 
 RewriteEngine on 
 RewriteRule ^myfiles/(.+)/(.+).zip download.php?section=$1&filename=$2 [nc] 
بزارید ساده بگم اگه شما عبارت (.+) رو مساوی با 1$ فرض کنیم (  1$=(.+) )ما میتونیم چندین بار از این عبارت استفاده کنیم به این صورت که  بار اول که از (.+) استفاده میکنیم مساوی با 1$ میگیریم در دفعه دوم مساوی  با 2$ میگیریم و همینطور الا اخر . 
در مثال بالا برای مثال اگه ما یه فایل در مسیر 

     کد:
http://mehr-design.ir/download.php?section=appz&filename=ABC 
 داشته باشیم این لینک از ادرس زیر هم در دسترس خواهد بود :

     کد:
http://mehr-design.ir/myfiles/appz/ABC.zip 
*
مثال :*

     کد:
 Options +FollowSymlinks 
 RewriteEngine on 
 RewriteRule ^blog/([0-9]+)-([a-z]+) http://mehr-design.ir/weblog/index.php?archive=$1-$2 [nc] 
 حالا اگه ادرس ارشیو وبلاگ ما بصورت : 

     کد:
http://mehr-design.ir/weblog/index.php?archive=2007-sep 
باشه تبدیل میشه به : 

     کد:
http://persiandev.net/blog/2007-sep  با کمی *Regular Expression* میتونید ادرس هاتون رو خیلی حرفه ای تر کنید و زیباتر

*راهنما دستورات :*


     کد:       .           Any single character[chars]     یکی ار کاراکترها میتونه این باشه برای مثال [A] 
[^chars]    هیج یک از این کاراکتر ها نباشه برای مثال [^A] 
text1|text2  همون کار or رو انجام میده 

Quantifiers: 
?           میتونه یک کاراکتر باشه و یا هیچ کاراکتری 
*           هرچیزی میتونه باشه حتی اگه چیزی وجود نداشته باشه 
+           حداقل یک کاراکتر وجود دارد 

Grouping: 
(text)    برای ساختن گروه بکار میره 

Anchors: 
^           شروع 
$           پایان 

Escaping: 
char        برای مثال برای درنظر نگرفتن علائمی مثل [] یا . یا غیره هست در این مواقع به عنوان دستور در نظر نمیگیره 
* مثال* 

     کد:
Options +FollowSymlinks 
 RewriteEngine On 
 RewriteRule ^get(.*) /public/download/download.php$1 
در مثال بالا ما گفتیم هر ادرسی که بعد از download.php قرار گرفت تبدیلش کنه به ادرس برای مثال 
اگه ادرسمون اینجوری باشه : 

     کد:
http://mehr-design.ir/downloads/download.php?myfile=ABC.zip تبدیل میشه به : 

     کد:
http://mehr-design.ir/Get?myfile=ABC.zip در مثال بعدی میخوایم دسترسی به پوشه هارو بگیریم از کاربر 

     کد:
Options +FollowSymlinks 
 RewriteEngine on 
 RewriteRule ^(.*)$ deny.php [nc] 
تو قسمت بالا اگه کاربر بخواد به هر نحوی وارد یه پوشه بشه ریدایرکت میشه به deny.php 
 بزارید در مثال بعدی کاری کنیم که فقط به فایل های خاصی دسترسی داشته باشه و بجز اون هر فایلی خواست باز کنه ارور بده : 
     کد:
Options +FollowSymlinks 
 RewriteEngine On 
 rewritecond %{REQUEST_FILENAME} !^(.+).css$ 
 rewritecond %{REQUEST_FILENAME} !^(.+).js$ 
 rewritecond %{REQUEST_FILENAME} !file.php$ 
 RewriteRule ^(.+)$ /deny/ [nc] 
تو دستور بالا ما گفتیم فقط به فایل هایCss Js و فایل file.php اجازه  بده که توسط کاربر فراخوانی بشه در غیر اینصورت ریدایرکت کنش به پوشه  /deny/ . 

*
HotLinking مثال* 

     کد:
Options +FollowSymlinks 
 # no hot-linking 
 RewriteEngine On 
 RewriteCond %{HTTP_REFERER} !^$ 
 RewriteCond %{HTTP_REFERER} !^http://(www\.)?mehr-design\.ir/ [nc] 
 RewriteRule .*.(gif|jpg|png)$ http://mehr-design.ir/red.jpg [nc] 
خوب فکر نمیکنم زیاد لازم به توضیح باشه کد بالا هر درخواستی رو که برای لود کردن عکس با فرمت gif,jpg,png از یه سایت دیگه باشه عکس http://mehr-design.ir/red.jpg نمایش داده میشه . 

اضافه کردن WWW به ادرس سایت : 
این کد این کار رو براتون میکنه : 

     کد:
Options +FollowSymlinks 
RewriteEngine on 
rewritecond %{http_host} ^www.mehr-design.ir [nc] 
rewriterule ^(.*)$ http://mehr-design.ir/$1 [r=301,nc] 
در واقع یه نوع ریدایرکت هستش البته از نوع peremantly moved . 

ترجمه سایت : 

     کد:
Options +FollowSymlinks 
RewriteEngine on 
RewriteRule ^(.*)-fr$ http://www.google.com/translate_c?hl=fr&sl=en&u=http://mehr-design.ir/$1 [r,nc] 
RewriteRule ^(.*)-de$ http://www.google.com/translate_c?hl=de&sl=en&u=http://mehr-design.ir/$1 [r,nc] 
RewriteRule ^(.*)-es$ http://www.google.com/translate_c?hl=es&sl=en&u=http://mehr-design.ir/$1 [r,nc] 
RewriteRule ^(.*)-it$ http://www.google.com/translate_c?hl=it&sl=en&u=http://mehr-design.ir/$1 [r,nc] 
RewriteRule ^(.*)-pt$ http://www.google.com/translate_c?hl=pt&sl=en&u=http://mehr-design.ir/$1 [r,nc] 
در کد بالا در صورتی که به اخر یک لینک یا ادرس یکی از کلمات de , -fr , -pr, -it- اضافه بشه توسط گوگل میتونید ترجمه کنید . 
عوض کردن نوع لینک برای مثال نوع ادرس عکس : 

     کد:
Options +FollowSymlinks  
RewriteEngine on  

RewriteRule ^pictures/(.*) http://mehr-design.ir/getpicture.php?$1 [r] 
خاموش و روشن کردن رجیستر گلوبال جهت اینستال برخی از برنامه ها

     کد:
php_flag register_globals on 


 امیدوارم که این آموزش به دردتون خورده باشه  :چشمک: 
موفق باشید دوستان

----------


## رضا قربانی

یک مقاله آموزشی بسیار جالب و آموزنده در مورد Mod_rewrite 

خیلی راحت کمکتون می کنه تا با Mod_rewrite ها آشنا بشید و چطور اون رو در لوکال هاست فعالش کنید

موفق باشید

----------


## armintirand

دوست عزیز من برای خطای ۴۰۴ میخواستم تست کنم نتونستم
اولا نوشتن فقط این دستور توی فایل.htaccessکافیه؟
ErrorDocument 404 /404.html 
ثانیا من چون این کد برام جواب نداد اومدم یک فایل با نام404.html ساختم و اونو کنار فایلهای .htaccess و php گذاشتم بازم جواب نداد بعد اومدم داخل فایل .htaccess رو ویرایش کردم و مسیر دقیق فایل 404.html  رو دادم اینبار کار کرد ولی اون پیامی که من توی فایل 404.html نوشته بودم رو نشون نداد فقط مسیر آدرس اونو برام آورد.
میشه یک نمونه کامل برای همین 404 بگید.

----------


## ghasemweb

من هم تست کردم جواب نداد

----------


## Mahdi.Spirit

> دوست عزیز من برای خطای ۴۰۴ میخواستم تست کنم نتونستم
> اولا نوشتن فقط این دستور توی فایل.htaccessکافیه؟
> ErrorDocument 404 /404.html 
> ثانیا من چون این کد برام جواب نداد
> ...


 


> من هم تست کردم جواب نداد


كد مشكلي نداره ،‌ فقط كافيه همون رو توي فايل htaccess‌ كپي كنيد و يه فايل هم با همون اسم html.404 ايجاد كنين كنارش بزارين

----------


## armintirand

دوست عزیز کارنمیکنه یعنی نتیجه ای که من میخوام رو نمیده!
من تو فایل 404.html پیامی ساختم که میگه این صفحه موجود نیست و کاربر رو بعد 2 ثانیه به صفحه اول سایت میبره ولی به جای اون فقط مسیر فایل 404 نشون داده میشه!
شما اگه میگی میشه نمونه انجام شدش رو بذار تا یاد بگیریم.

----------


## Mahdi.Spirit

> دوست عزیز کارنمیکنه یعنی نتیجه ای که من میخوام رو نمیده!
> من تو فایل 404.html پیامی ساختم که میگه این صفحه موجود نیست و کاربر رو بعد 2 ثانیه به صفحه اول سایت میبره ولی به جای اون فقط مسیر فایل 404 نشون داده میشه!
> شما اگه میگی میشه نمونه انجام شدش رو بذار تا یاد بگیریم.


خب برای من کار میکنه ! 
ضمیمه کردم، بعد از 2 ثانیه میره به index.php

---------------------
پ.ن:
1- آدرس دهي فايل ضميمه رو تصحيح كردم 
2-فايلها بايد در root كپي(extract) شود!

----------


## armintirand

شما یا این کد رو خودت ننوشتی یا خواستی منو کلاس بذاری!!
دوست عزیز فایل ایندکس شما اصلا لینک نداره که اگه روش کلیک کنیم و اگه مو جود نبود و ارور ۴۰۴ داد اونی که خودمون ساختیم رو بده.
در ضمن من با اضافه کردن یک لینک به فایل ایندکس شما بازم کار نکرد و ارور پیشفرض ۴۰۴ را داد.
لطفا بررسی کنید.
ممنون

----------


## mtchabok

عزیزان برای منم درست کار میکنه .
مواردی رو که باید رعایت کنید اینهاس :
- ادرس رو سعی کنید که کامل وارد کنید : اگه فایل خطای شما در آدرس http://localhost/test/404.html قرار داره میتونید هم به همون صورت و هم /test/404.html وارد کنید .
- سعی کنید آدرستون رو در یه ' قرار بدید . البته فرقی ندارها برای محکم کاری .

----------


## Mahdi.Spirit

> شما یا این کد رو خودت ننوشتی یا خواستی منو کلاس بذاری!!
> دوست عزیز فایل ایندکس شما اصلا لینک نداره که اگه روش کلیک کنیم و اگه مو جود نبود و ارور ۴۰۴ داد اونی که خودمون ساختیم رو بده.
> در ضمن من با اضافه کردن یک لینک به فایل ایندکس شما بازم کار نکرد و ارور پیشفرض ۴۰۴ را داد.
> لطفا بررسی کنید.
> ممنون


من نميدونم چرا اينقدر زود عصباني ميشيد؟ و فكر ميكنين همه يا دارن كلاس ميزارن يا ميپيچونن  :متعجب:  ضمنا كسي هم اينجا حقوق نميگيره كه حتما بياد جواب بده ،‌ هركسي اينجا هر چقدر دوست داره كمك ميكنه و معمولا همه سعي ميكنن به سوالا كامل (در حد كفايت) جواب بدن!
خب وقتي اين كد براي من كار ميكنه بيام بگم نميشه؟ بعدش مگه دو خط كد اونم فقط نوشتن چنتا كلمه توي خروجي كلاس گذاشتن داره كه بخوام خودم بنويسم يا كپي كنم :چشمک: 
احتمالا مشكل كدتون اينه كه فايل htaccess  رو توي root نميزاريد و توي فولدر ميزاريد بعد آدرس ها رو خوب نمينويسين،‌ اول همون فايلي كه دادم رو توي root‌ كپي كنيد و تست كنيد ولي اگر توي فولدر ميزاريد اين كاري كه دوستمون گفتن رو انجام بدين  



> مواردی رو که باید رعایت کنید اینهاس :
> - ادرس رو سعی کنید که کامل وارد کنید : اگه فایل خطای شما در آدرس http://localhost/test/404.html قرار داره میتونید هم به همون صورت و هم /test/404.html وارد کنید .
> - سعی کنید آدرستون رو در یه ' قرار بدید . البته فرقی ندارها برای محکم کاری .


مثلا اگر توي فولدر به اسم 404 گذاشتين فايل htaccess بايد اينطوري باشه 

ErrorDocument 404 /404/404.html
يا 
ErrorDocument 404 http://localhost/404/404.html

ضمنا اون لينك به صفحه اي كه موجود نباشه هم براي اينكه لازم نبود نزاشتم ،‌ شما توي آدرس بار يه چيز الكي بنويسيد تست كنيد 
مثلا:

localhost/asdfghjkl

اميدوارم مشكلتون حل شده باشه

----------


## رضا قربانی

چقدر عصبانی


مشکلی نداره - این رو دقت داشته باشید که برای استفاده از این فایل باید آدرس ها رو بطور کامل بدید !!!! (حتی در فایل های php برای لینک ها یا فراخوانی استایل و جاوا و ...)
http://localhost/test/s.css

----------


## armintirand

شرمنده عمدی نیست من مدتی پیش چیزی از وب نمیدونستم تقریبا۱ سال پیش ولی به خاطر یه پیشنهاد کاری افتادم تو کار وب و چون وقت کمی برای یادگیری داشتم شدید مطالعه کردم ولی امان از اینکه آدم جویای مطلب باشه و مطلب نایاب! :گریه:

----------


## Mahdi.Spirit

آقا *رضا* لطفا شما هم اوني كه آپلود كردم رو يه تست كن (با توضيحاتي كه دادم) ببين مشكلي داره؟!

----------


## رضا قربانی

> آقا *رضا* لطفا شما هم اوني كه آپلود كردم رو يه تست كن (با توضيحاتي كه دادم) ببين مشكلي داره؟!



بله مشکل داره

همون طور که گفتم باید کامل آدرس دهی کنید !!!!!!!!!!!!!  چندین بار دارم همه جا می گم و مشکل شما و دوست عزیزمون هم همینه
  فایل دوست گلم *Mahdi.Spirit رو بگیرید (در صفحه قبلی) ،*  باید داخل فایل اچ تی اکسس اینطوری آدرس دهی کنید :
ErrorDocument 404 http://localhost/htaccess404/404.html

هم مشکل شما حل می شه و هم مشکل این دوستمون که یه کم اعصابش خورده و نمی دونه جریانش چیه .

صفحه 404 رو هم توی گوگل تصویرش رو سرچ کنید چیزای جالبی گیرتون میاد .
 مانند :
http://geniusgeeks.com/blog/wp-conte...009/09/404.jpg

http://sensorymetrics.com/wp-content...007/08/404.JPG

و ...


موفق باشید

----------


## Mahdi.Spirit

آقا رضای گل من كه مشكل نداشتم!
برای من كه كار میكرد
بعدش توی پست بعدی هم توضیح دادم كه یا باید كل اون چنتا فایلی كه گذاشتم رو توی root بزارن یا توی htaccess آدرس كامل رو بزارن

----------


## armintirand

ممنون از کمکتون.
بابا اینقدرا هم عصبی نیستم.
خیلی برای یاد گرفتمن عجله دارم شاید کسایی که برای کنکور فشرده درس میخونن به اندازه من اینقدر مطالعه نمیکنن. :لبخند گشاده!:

----------


## رضا قربانی

> آقا رضای گل من كه مشكل نداشتم!
> برای من كه كار میكرد
> بعدش توی پست بعدی هم توضیح دادم كه یا باید كل اون چنتا فایلی كه گذاشتم رو توی root بزارن یا توی htaccess آدرس كامل رو بزارن


آدرس دهی دیگه " یا " نداره . حتما باید کامل باشه .

شاید ورژن آپاچی شما بالاتر باشه و به این چیزا اهمیت نده !!! ولی درستش اینه که کامل آدرس دهی کنید چون همه جوره درست می زنه (چه ورژن پایین باشه چه ورژن بالاتر باشه چه توی هاست لینوکس بذارید )  مشکل این بود .
در غیر این صورت بسیار  خوب و ساده برای دوستمون فایل آماده کردید و  یه تشکر هم ازتون نکرد  :لبخند گشاده!: 


*armintirand عزیز مشکلت حل شد ؟ (ما آخر نفهمیدیم - انقدر کتاب نخون ، عملی بیشتر کار کن)*

موفق باشید

----------


## armintirand

اقا ممنون اره حل شد فقط یک سوال با چیزایی که تو این فایل هست میشه امکانات محدود کردن مثل سایتهای دانلود محدود مثل رپید شیر رو ساخت؟

----------


## رضا قربانی

> اقا ممنون اره حل شد فقط یک سوال با چیزایی که تو این فایل هست میشه امکانات محدود کردن مثل سایتهای دانلود محدود مثل رپید شیر رو ساخت؟


متوجه منظورت نشدم . می خوایی چی کار کنی ؟ چه عملی می خوایی واست انجام بده

----------


## armintirand

اخه گفته بودند برای امنیت سایت این کارها مناسبه میخواستم ببینم چه نوع امنیتی ایجاد میکنه؟
یک موضع جالب امروز ارور ۴۰۴ هاستم رو از طریق کنترل پنل فعال کردم روی فایرفاکس کار میکنه اما روی اینترنت اکسپلورر کار نمیکنه!

----------


## رضا قربانی

با سلام خدمت تمامی دوستان

می خوام ادامه این تاپیک رو آرشیو مطالب htaccess  کنم و هر چیزی رو که یاد گرفتم و از جایی پیدا کردم در این تاپیک قرار بدم تا یه جورایی هم شما استفاده کنید و هم یه دفترچه یادداشتی بشه برای خودم که یه موقعی احتیاج داشتم بهش رجوع کنم .

یه خواهشی ازتون دارم . ممنون می شم که پست های بی ربط نزنید . 

اگر شما هم مطالبی  در اختیار دارید ممنون می شم در اختیار عموم قرار بدید تا من و بقیه دوستان یاد بگیریم .

با تشکر از همگی دوستان و پیشاپیش ممنون از همکاری های آینده
موفق باشید

----------


## رضا قربانی

Htaccess. یک فایل پیکر بندی برای وب سایت هایی است که از سرور آپاچی  استفاده می کنند. وقتی این فایل در یکی از پوشه های وب سایت قرار می گیرد،  وب سرور آپاچی بررسی می کند که چه دستوراتی  در این فایل وجود دارد و بعد  طبق این دستورات، آن قسمت از سایت که htaccess در آن قرار دارد را پیکر  بندی می کند. این فایل می تواند برای فعال و یا غیر فعال کردن یک سری از  توابع و ویژگی های  وب سرور آپاچی مورد استفاده قرار بگیرد که می تواند  ریدایرکت کردن یک صفحه یا نمایش پیغام های خطای رایج مانند: ارور 404 را  شامل شود.
استفاده از این فایل در همه موارد پیشنهاد نمیشود زیرا امنیت وب سرور را  تحت شعاع قرار می دهد. اما در مواقعی که سرور به صورت اشتراکی و اصطلاحا  share شده خدمت رسانی می کند و تعداد زیادی سایت برروی آن قرار دارد  پیشنهاد آن است که از فایل htaccess استفاده شود. زیرا هر سایت باید  توانایی پیکر بندی قسمت مربوط به خود را دارا باشد.
نکته: به دلیل آنکه نحوه پیکربندی این فایل مانند پیکربندی فایل اصلی سرور   (httpd.conf)است تصمیمات بر اساس شرایط اخذ می شود. البته تمامی امکانات  httpd.conf را شامل نمی شود!
عبارت .htaccess"" خود یک نام فایل است و دقیقا به همین صورت مورد استفاده  قرار می گیرد. پس نیازی به اضافه کردن چیزی قبل از "." نیست. و عبارت  "file.htaccess" قابل قبول نمی باشد!
برای اعمال پیکر بندی و تغییرات مورد نظر(محدودیت دسترسی، ریدایرکت و...)  فقط کافی است فایل htaccess را در یکی از پوشه های دلخواه قرار دهید تا وب  سرور آپاچی پس از بررسی دستورات موجود در این فایل تغییرات را برروی پوشه و  پوشه های زیر مجموعه اعمال کند.
برای ایجاد این فایل در سیستم عامل لینوکس لازم است یک فایل را ایجاد کرده و  سپس نام آن را به .htaccess تغییر دهیم. اما در ویندوز به دلیل آنکه این  سیستم عامل از فرمت "پسوند.نام فایل" پشتیبانی می کند و هر حرفی بعد از "."  را پسوند فایل می داند و طبیعتا نام فایل نمی تواند خالی باشد از فرمت  .htaccess پشتیبانی نمی کند. برای حل این مشکل می بایست از یک ویرایشگر متن  استفاده کرد و در مرحله ذخیره نام آن را به .htaccess تغییر نام دهیم.

سرور آپاچی در اصل متعلق به خانواده لینوکس هست. در خانواده لینوکس برای  مخفی کردن یک فایل در اول فایل یک نقطه "." گذاشته می شود. پس ساختار این  فایل به این صورت است: ".htaccess"
امنیت یک فایل در حالت مخفی می تواند بیشتر باشد.

*کنترل دسترسی افراد به بخش های خاصی از سایت :
*امنت یکی از اصول مهم وب سایت های اینترنتی است. هرچه امنیت سایت بالاتر  باشد امنیت خاطر کاربران و همچنین مدیر سایت بیشتر خواهد شد. در این بین  لازم است تا ناحیه هایی از سایت را با اعمال یک پروسه امنیتی محدود کنیم.  این ناحیه می تواند کنترل پنل و یا حتی عکس و... باشد. با استفاده از فایل  htaccess می توان این کار را به بهترین نحو انجام داد. برای اعمال این  کنترل لازم است تا مواردی را انجام دهیم. پس ماژول ها و دستورات خاصی لازم  است که در ادامه شرح داده خواهد شد.
حداقل یکی از انواع ماژول های زیر احتیاج داریم:
1- ماژول های مربوط به نوع تصدیق هویت, که شامل mod_auth_basic و mod_auth_digest است. و توسط دستور AuthType مشخص می شوند.
2-  ماژول هایی که وظیفه ارائه تصدیق هویت را بر عهده دارند و  شامل ماژول  هایmod_authn_alias, mod_authn_anon, mod_authn_dbd, mod_authn_dbm,  mod_auth_default, mod_authn_file, mod_authnz_ldap می شوند.
3-  ماژول هایی که اختیارات لازم را به گروه ها و اشخاص مختلف می دهند و  عبارتند از mod_authnz_ldap, mod_authz_dbm, mod_authz_default,  mod_authz_groupfile, mod_authz_owner, mod_authz_user. این ماژول ها توسط  دستور Require به کار برده می شوند.
اما روش کار به این صورت است که اول بایستی یک فایل که حاوی نام کاربری و  رمز عبور برای ورود به این ناحیه لازم است را ایجاد کنیم. به منظور امنیت  بیشتر این فایل باید دور از دسترس باشد و در جایی خارج از مسیردهی مرورگر  واقع شود. مانند: /home/usr/pass. پس از ایجاد فایل مربوط به رمز عبور و  نام کاربری، این فایل را باز کرده و نام کاربر و رمز عبور را در یک خط درج  می کنیم به طوری که نام کاربر و رمز عبور با ":" از هم جدا شده باشند.
توجه: دقت کنید که رمز عبور شما باید با تکنولوژی md5 رمزگذاری شده باشد!
پس از انجام مراحل بالا فایل .htaccess را در مسیری که به امنیت احتیاج دارد ایجا می کنیم و دستورات زیر در آن نگارش می شوند:



AuthName "Member's Area Name"
AuthUserFile /path/to/password/file/.htpasswd
AuthType Basic
require valid-user
در این مثال دستوراتی دیده می شود.
Authname: نام ناحیه محافظت شده است که به کاربر نشون داده می شود.
Authuserfile: مسیر مربوط به فایلی است که رمز و نام کاربری در آن قرار دارد.
Authtype: نوع شناسایی هویت را مشخص می کند که در این مثال از basic یکی از پرکاربردترین روش برای محافظت استفاده شده است.
Require: اسم یوزری که حق وارد شدن به ناحیه محافظت شده را دارد مانند: vahid         


ادامه دارد ...

----------


## رضا قربانی

*تغییر مسیر یا Redirect به وسیله htaccess.*
هنگامی که قابلیت تغییر مسیر در httpd.conf سرور فعال باشد مدیر سایت به  راحتی می تواند بازدیدکنندگان خود را به صفحات دلخواه هدایت کند و این می  تواند بسیار مفید باشد مثلا وقتی که محتوای سایت منتقل شده به راحتی می  توان افراد را به محل جدید هدایت کرد.
برای این کار باید از کد زیر استفاده کنید:


Redirect /old_dir/ http://www.yourdomain.com/new_dir/index.html 
این دستور مایانگر این است که اگر کسی به مسیر /old_dir/ رفت بطور  اتوماتیک به /new_dir/ منتقل شود و محتوای مسیر جدید نمایش داده شود.
در این مثال هر دو مسیر در یک سایت وجود دارد.

*بلوکه کردن درخواست ها از یک ip خاص*
به دلیل برخی مشکلات امنیتی لازم است که از ورود برخی افراد جلوگیری شود که  یکی از این راه ها بلوکه کردن ip این افراد است. ویا حتی مایلید که هیچ کس  به غیر از مدیر سایت قادر نباشد به بخش مدیریتی برود. این دستور کمک  بسیاری به کسانی که این هدف را دارند می کند.
برای این منظور متن زیر رو در فایل .htaccess قرار دهید:


order allow,deny
deny from 255.0.0.0
deny from 123.45.6.
allow from all 
این خطوط ip 255.0.0.0 و ip  های بین 123.45.6.0 و 123.45.6.255 را بلوکه می کند.
توضیح: 255.0.0.0 یک آی پی default و بجای آن می توان هر آی پی را وارد کرد.
اما وقتی که بخواهیم همه ip  ها به جز یک آی پی خاص را بلوکه کنیم از خط زیر استفاده می شود:


Order allow,deny
Allow from 255.0.0.0
Denny from all 
این خط نیز می گه که فقط ip 255.0.0.0 اجازه عبور داره و بقیه بلوک هستند.
توضیح: 255.0.0.0 یک آی پی default و بجای آن می توان هر آی پی را وارد کرد.


*بلوکه کردن درخواست ها از یک آدرس url خاص (تکنیک referrers)*
این عمل نیز مانند بالا عمل بلوکه کردن را انجام می دهد. اما با این تفاوت که به جای آی پی از آدرس url استفاده می کند.
نکته: برای اجرای این درخواست  به ماژول 'mod_rewrite' احتیاج داریم. لذا باید این ماژول را فعال کرد.
پس ابتدا از کد زیر استفاده می کنیم:


RewriteEngine on 
سپس:


# Options +FollowSymlinks
RewriteCond %{HTTP_REFERER} otherdomain\.com [NC]
RewriteRule .* - [F] 
این دستور ترافیک درخواستی از آدرس: otherdomain.com  را بلوکه می  کند. nc  آخر نیز مخفف کلمه it as not case-sensitive به معنی اینکه آدرس  دارای حساسیت نیست. و به طور دقیق تر اینکه به هر طریقی که آدرس درخواست  کننده تغییر داده شود بلوکه می شودمانند: 


OtherDomain.com , oTherdOmain.com , OTHERDOMAIN.COM 
و اما / قبل از نقطه این دقت را به وجود می آورد که بطور اشتباه آدرس  domain.com  را هم بلوک نکند. و این بخاطر استفاده از nc  است که در مورد  آدرس ها سخت گیری بعمل می آورد.
اگه symlink در فایل httpd.conf غیر فعال و بسته باشد به خاطر وجود Options  +FollowSymlinks  ارور 500 internal server error  برگشت داده می شود. که  در این صورت باید با مدیر سرور تماس گرفت و درخواست فعال سازی symlink را  خواستار شد.
نسخه کامل:


RewriteEngine on
# Options +FollowSymlinks
RewriteCond %{HTTP_REFERER} otherdomain\.com [NC,OR]
RewriteCond %{HTTP_REFERER} anotherdomain\.com
RewriteRule .* - [F] 
در این مثال ما از یک آدرس دیگر هم استفاده کردیم و درواقع 2 آدرس را  بلوکه کردیم، که به این کار اصطلاحا multiple referrers گفته می شود.


*عدم نمایش فایل های خاصی از سایت به url (ها)*
آیا شما یک رقیب دارید که مایل نیستید که از فایلهاتون استفاده کند؟ آیا  شما ساعت ها برای طراحی یک CSS زحمت کشیدید و مایل نیستید که فلان آدرس  بیاد و از زحماتتون استفاده کنه به اسم خودش؟! 
پس با دقت این بخش را مطالعه نمائید.
 نکته: برای اجرا شدن این درخواست  به ماژول 'mod_rewrite' احتیاج می باشد. لذا باید این ماژول را فعال کنیم.
مثلا می خواهیم کسی نتواند در یکی از  پوشه های سایت، فایل های با  پسوند:.jpg,.gif,.css را ببیند و همچنین در سایت خود قرار دهد و در واقع از  قالبی که ما ساخته ایم استفاده کند.
دستورات زیر را در فایل .htacces قرار دهید:


RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?yourdomain.com/.*$ [NC]
RewriteRule \.(gif|jpg|css)$ - [F] 
این دستور تمام درخواست های استفاده و یا مشاهده فایل با پسوند jpg,gif,css را که از سایت yourdomain.com نیستند را بلوکه می کند. 


ادامه دارد ...

----------


## رضا قربانی

*مشخص کردن صفحه پیش فرض برای نمایش

*شما می توانید فایل هایی را به طور پیش فرض برای نمایش به بازدیدکنندگان  مشخص نمایید. مثلا هنگامی که بازدید کننده به سایتی مراجعه می  کند(yoursite.com) به جای لیست دایرکتوری و نمایش فایل های موجود در  دایرکتوری یک فایل با پسوند خاص را نمایش دهد. این فایل قابل تغییر است و  می توان به طور دلخواه آن را مشخص کرد. به طور پیش فرض در سرور ها به این  صورت می باشد:


DirectoryIndex index.html 
که شما می توانید به صورت زیر تغییر دهید:


DirectoryIndex index.html index.php index.cgi 
وقتی بازدید کننده آدرس سایت را وارد می نماید آپاچی جستجو می کند که  چه فایل هایی در htacces به طور پیش فرض مشخص شده اند و با توجه به اولویت  داده شده آنها را نمایش می دهد. برای مثال در مثال بالا ابتدا فایل  index.html و در صورت نبود فایل index.html ، فایل index.php را نمایش می  دهد و در پایان اگر هیچکدام از این دو فایل موجود نباشد، فایل index.cgi به  نمایش کشیده می شود.

*ایجاد پسوند برای فایل یا MIME*
دوستان در برخی موارد ما نیاز داریم تا پسوند خاصی را برای یک فایل مشخص  ایجاد کنیم یا یک پیوند خاص برای یک فایل مثلا html را به وب سرور آپاچی  معرفی کنیم. برای اینکار یک فایل htaccess در پوشه مربوطه ایجاد کرده و کد  زیر را درآن وارد می کنیم:


 AddType text/html html0 
در بخش نخست دستور اعلام می کند که یک پسوند اضافه می شود. و در بخش  دوم نوع فایلی که بایست پسوند جدید ست شود را مشخص می کنیم و در بخش آخر  پسوند جدید را می نویسیم. این کد فایل با پسوند html0 را به عنوان یک فایل  html می شناسد و آنرا به صورت یک سند وب اجرا می کند.
در مواردی لازم است که شما فایل های مشخص شده ای را برای دانلود در سایت  خود قرار دهید که در این بین ممکن است با عدم دانلود این فایل ها مواجه  شوید. برای جلوگیری از این مشکل از دستور زیر استفاده می کنیم:


AddType application/octet-stream .bin 
در این صورت هنگامی که فایلی با پسوند bin  فراخوانی شود. مرورگر شروع به دانلود این فایل می کند!
در زیر لیستی از مهمترین پسوند ها را مشاهده می کنید:


AddType text/html .html .htm 
AddType text/plain .txt 
AddType text/richtext .rtx 
AddType text/x-server-parsed-html .shtml .sht 
AddType application/octet-stream .bin .exe 
AddType application/pdf .pdf 
AddType application/postscript .ai .eps .ps 
AddType application/rtf .rtf 
AddType application/zip .zip 
AddType application/x-sh .sh 
AddType application/x-gtar .gtar 
AddType application/x-tar .tar 
AddType application/x-httpd-cgi .cgi 
AddType image/gif .gif .GIF 
AddType image/jpeg .jpeg .jpg .jpe .JPG 
AddType image/tiff .tiff .tif 
AddType video/mpeg .mpeg .mpg .mpe 
AddType video/quicktime .qt .mov 
AddType video/x-msvideo .avi 
AddType video/x-sgi-movie .movie 






*فعال کردن SSI بوسیله htaccess*

SSI مخفف عبارت server side includes می باشد و این بدان معناست که بوسیله  این روش می توانید سندهای html و یا cgi دیگری را به وب سایت خودتون بوسیله  تگ مخصوص آن بچسبانید. این متد بسیار مفید است چراکه به فرض شما می توانید  یک منو یا هدر و... را به صفحات سایت خودتون اضافه کنید و دیگر نیاز نیست  برای هر صفحه کد بنویسید. فقط کافی است از این متد استفاده کنید.
تگ زیر فراخوانی یک سند SSI را به شما نمایش می دهد. این کد باید در بین  صفحات وب قرار گیرند. این کد باعث می شود که اسکریپت CGI واقع در مسیر  مربوطه فراخوانی و اجرا شود.



<!--#exec cgi="/cgi-bin/script.cgi"--> 
در کد زیر نیز یک سند html معمولی فراخوانی می شود.<!--#include virtual="/files/document.html"--> 
اما این متد نیاز به فعال شدن دارد و برای فعال کردن آن باید از فایل  htaccess کمک گرفت. برای این منظور فایل htaccess  را در مسیر مربوطه  ایجاد کنید و کد زیر را در آن وارد نمایید:



AddHandler server-parsed .html 
این کد آپاچی را به گونه ای پیکر بندی می کند که اجازه داشته باشد  متد SSI را در خصوص فایل html اعمال کند. وبرای اجرای این متد برروی چندین  فایل باید کد زیر را وارد نمایید:



AddHandler server-parsed .html
AddHandler server-parsed .shtml
AddHandler server-parsed .htm 
*اجرای اسکریپت CGI در خارج از مسیر مربوطه( /cgi-bin/)*

اگر سرور شما اجازه استفاده از فایل های cgi خارج از پوشه /cgi-bin/ را نمی  دهد، براحتی می توانید این متد را فعال نمایید. به شرطی که ادمین سرور  اجازه این کار را به شما داده باشد.
برای فعال سازی این متد، ابتدا فایل htaccess را ایجاد نموده و کدهای زیر را در آن وارد نمایید:


AddHandler cgi-script .cgi
Options +ExecCGI 
خط اول فایل های .cgi را به عنوان اسکریپت cgi معرفی می کند و در خط دوم اجزاه اجرای این فایل را در مسیر مربوطه می دهد. 		


ادامه دارد ...
موفق باشید

----------


## رضا قربانی

*غیر فعال کردن نمایش دایرکتوری

*ممانعت از لیست شدن دایرکتوری می تواند بسیار مفید باشد. برای مثال وقتی که  شما یک دایرکتوری حاوی فایل های مهم دارید و نمی خواهید این فایل ها در  معرض نمایش قرار گیرند. و یا حتی برعکس می خواهید برخی فایل ها را به نمایش  بگذارید.

برای جلوگیری از نمایش دایرکتوری ابتدا یک فایل htaccess ایجاد کرده و کد زیر را در آن وارد نمایید:


IndexIgnore * 
این خط سرور آپاچی را به گونه ای پیکر بندی می کند که از نمایش  دایرکتوری ممانعت ورزد. این دستور تمامی فایل های داخل دایرکتوری را غیر  قابل نمایش می کند چراکه از کاراکتر * به معنی همه فایل ها استفاده کرده  است.
اما برای ممانعت از نمایش یک نوع فایل خاص مانند zip فقط کافی است از این پسوند استفاده نمایید.


IndexIgnore *.zip 
دقت نمایید که در مثال قبل فقط یک ستاره بکار برده شده بود اما در  این مثال پسوند نیز بکار برده شده و این به این معنی است که همه فایل ها به  جز zip قابل نمایش هستند.
همچنین شما می توانید چندین فایل را بکار برید:


IndexIgnore *.zip *.jpg *.gif 
یک پیشنهاد: گاهی اوقات سرور اجازه فعال کردن indexignore را نمی دهد. شما می توانید خود این متد را فعال نمایید:



Options +Indexes 
برای غیر فعال سازی متد نیز بجای کارکتر"+" از کاراکتر "-" استفاده نمایید.

*تنظیم منطقه زمانی سرور*
گاهی اوقات شما از یک سرور در آمریکا هاست خریداری کرده اید اما سایت شما  محتوای فارسی دارد و در ایران و ساعت ایران کاربرد دارد و شما باید ساعت را  به ساعت ایران نشان دهید. برای اینکار آپاچی چاره ای اندیشیده است. برای  تنظیم این ویژگی کافی است کدهای زیر را در فایل htaccess وارد نمایید:


SetEnv TZ America/Indianpolis
SetEnv TZ America/Los_angeles 
*تغییر امضای سرور*
برای تغییر امضای سرور که هنگام بروز مشکل به کاربر نمایش داده می شود در قالب خطاهای رایج آپاچی از کد زیر استفاده نمایید:


ServerSignature EMail
SetEnv SERVER_ADMIN nospace@pleasenospace.com 
برای غیر فعال سازی این متد نیز از کد زیر استفاده نمایید:



ServerSignature Off 
*ممانعت از دسترسی به فایل های php includes*

اگر شما پوشه حاوی فایل های inclue دارید بهتر است برای امنیت بیشتر از  دسترسی افراد به این فایل ها جلوگیری کنید. اکنون راهی که از ماژول  mod_Rewrite استفاده می کند را به شما آموزش می دهم.



## Enable Mod Rewrite, this is only required once in each .htaccess file
RewriteEngine On 
RewriteBase / 
## Test for access to includes directory
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /includes/ .*$ [NC] 
## Test that file requested has php extension 
RewriteCond %{REQUEST_FILENAME} ^.+\.php$ 
## Forbid Access 
RewriteRule .* - [F,NS,L]

----------


## رضا قربانی

*ممانعت از دسترسی به فایل php.ini* 

اگر شما ترس از این دارید که افرادی به فایل های پیکربندی php دسترسی پیدا  کنند می توانید این دسترسی را بوسیله فایل htaccesss محدود نمایید.
برای فعال سازی این متد فایل های زیر را در htaccess قرار دهید:


<FilesMatch "^php5?\.(ini|cgi)$">
Order Deny,Allow 
Deny from All 
Allow from env=REDIRECT_STATUS 
</FilesMatch> 
*نمایش سورس فایل های اجرایی تحت وب*
اگر نیاز دارید تا سورس کد اسکریپت های خود را به نمایش بگذارید کافی است  پسوند این فایل ها را از حالت اجرایی خارج و آنها را به حالت نمایش به صورت  متنی درآورید.



RemoveHandler cgi-script .pl .cgi .php .py 
AddType text/plain .pl .cgi .php .py 
*دانلود فایل های مدیا به جای اجرای آن*
فایل های mp3 و دیگر فایل های مدیا طبق شرایطی ممکن است به جای دانلود شدن  به اجرا در آیند. برای ممانعت از چنین کاری از کدهای زیر استفاده کنید:



AddType application/octet-stream .zip .mp3 .mp4 
که این کد سرور آپاچی را به گونه پیکر بندی می کند که این فایل ها را دانلود شدنی بداند.

*ممانعت از درخواست با کارکترهای نامعتبر*
شما می توانید کاراکتر های غیر مجاز را بلوکه نمایید تا بدین وسیله امنیت  سایت خود را افزایش دهید. برای اینکار کدهای زیر را در فایل htaccess وارد  نمایید:


RewriteEngine On 
RewriteBase / 
RewriteCond %{THE_REQUEST} !^[A-Z]{3,9}\ [a-zA-Z0-9\.\+_/\-\?\=\&]+\ HTTP/ [NC] 
RewriteRule .* - [F,NS,L] 
موفق باشید دوستان

----------


## ghiravani

> كاربرد دوم- نمایش پسوند دلخواه صفحات (add mime type) 
> 
> يك راه امنيتي كه من واقعا پيشنهاد ميكنم واسه حفاظت از اسكريپت هاي php شما اينه كه اونا php نباشن !! بله يعني مثلا asp يا jsp باشن اينطوري یه مقدار مطلب پیچیده میشه برای تشخیص
> 
> کد:
> 1
> AddType application/x-httpd-php .asp .jsp 
> Addtype ميگه كه ما ميخوايم يه فرمت جديد بشناسونيم بعد نوع اون فايلهاي خاص با فرمت دلخواه رو ميگيم مثلا image/png يا text/css بعد ميگيم كه چه فرمتي رو از اين به بعد به عنوان نوعي كه گفتيم بشناس


من از کدی که گفتید در یه فایل با نام "htaccess" در کنار فایل PHP قرار دادم.

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


اما من هر کاری کردم جواب نداد!!!
چکار کنم؟؟

ابتدا یه فایل PHP ساختم با نام one.php بعد یک فایل "htaccess" ساختم با مشخصات بالا.اما وقتی آدرس صفحه رو با one.asp و one.jsp و... تست کردم ارور 404 میداد.روی هاست تست کردم.روی لوکال هم جواب نداد.
لطفا راهنماییم کنید.ممنون

----------


## mamali-mohammad

من این دستور رو نوشتم
IndexIgnore * 
اما وقتی با اسکنر سایت رو اسکن می کنم ، بازم مسیر فایل ها و فولدرهارو نشون میده
چه کنم ؟

----------


## m.mahdim

یه سوال:
عوض کردن پسوند های php به aspx و سپس هم از این کد استفاده کردن فایده داره؟  :

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

یعنی تاثیرش چقدره؟ من باید توی کل سایتم تمام پسوند ها و لینک ها رو عوض کنم آخه! ارزشش رو داره؟
سپاس.  :خجالت:

----------


## m.mahdim

> من از کدی که گفتید در یه فایل با نام "htaccess" در کنار فایل PHP قرار دادم.
> 
> AddType application/x-httpd-php .asp .jsp
> 
> 
> اما من هر کاری کردم جواب نداد!!!
> چکار کنم؟؟
> 
> ابتدا یه فایل PHP ساختم با نام one.php بعد یک فایل "htaccess" ساختم با مشخصات بالا.اما وقتی آدرس صفحه رو با one.asp و one.jsp و... تست کردم ارور 404 میداد.روی هاست تست کردم.روی لوکال هم جواب نداد.
> لطفا راهنماییم کنید.ممنون


 aspx رو امتحان کنید.
یعنی:
AddType application/x-httpd-php .aspx .jsp

----------


## رضا قربانی

> من این دستور رو نوشتم
> 1
> IndexIgnore *
> 
> اما وقتی با اسکنر سایت رو اسکن می کنم ، بازم مسیر فایل ها و فولدرهارو نشون میده
> چه کنم ؟


همین رو من برای صفحه ادمینم استفاده کردم و درست نمایش می ده ولی اگر نتونستید این روش رو پیاده سازی کنید یک روش دیگر هم هست که توسط تگ meta می تونید از نمایش فایل جلوگیری کنید برای مثال اولین فایلی که اجرا می شه و داخل یک فولدری قرار داد index.php  می باشد که یک تگ متا داخل هد بنویس و robots رو مساوی  از نوع  NOINDEX,NOFOLLOW,NOARCHIVE  بگذار . با این کار اگر اسکن کنی دیگه چیزی پیدا نمی شه .




> عوض کردن پسوند های php به aspx و سپس هم از این کد استفاده کردن فایده داره؟


عوض کردن آدرس های حقیقی  به دروغین -  خیلی توی امنیت تاثیر داره و هر کسی نمی تونه به همین راحتی بفهمه که به چه صورت آدرس کردید و  حتی  اگر با کراول ها هم اسکن  کنه بازم آدرس حقیقی نشان داده نخواهد شد .  و در کل می شه یه قسمت کوچیک از امنیت به حساب بیاد.

اگر به html تبدیل کنید که توی سئو تاثیر چشم گیری داره که خودتون متوجه میشید .

----------


## m.mahdim

منظورم این بود که ارزشش رو داره همه  فایل ها رو رینیم کنم و بعد هم همه ی لینک ها رو عوض کنم؟؟

----------


## رضا قربانی

> منظورم این بود که ارزشش رو داره همه  فایل ها رو رینیم کنم و بعد هم همه ی لینک ها رو عوض کنم؟؟


 بنده هم جواب شما رو در پست قبلی دادم .
بله ارزشش رو داره

موفق باشید

----------


## ghiravani

> aspx رو امتحان کنید.
> یعنی:
> AddType application/x-httpd-php .aspx .jsp


ممنون.اما این رو هم تست کردم ، سورس کد سایت رو مثل فایل txt باز کرد!!!!!!!!!!!!!!!!!!

این کارا رو کردم جواب نداد.اول کد زیر رو نوشتم
AddType application/x-httpd-php .aspx .jsp
بعد فایل مورد نظر رو که one.php بود ، بدون اینکه پسوندش رو عوض کنم ، با آدرس one.asp ، one.aspx و one.jsp تست کردم اما یا ارور 404 میداد یا کل سورس صفحه رو مثل یه فایل txt نمایش میداد!!!!
بعد پسوند همون فایل one.php رو به asp ، aspx و jsp تغییر دادم و تست کردم بازم جواب نداد!!!!

دوستان من یه فایل دارم با نام one.php ، میخوام کاری کنم که کاربر عادی نفهمه سایت با php هست.میخوام این فایل با همون فرمت one.php باشه اما اگر کاربر بجاش بزنه مثلا one.aaa هم همون صفحه باز بشه.باید چکار کنم؟؟؟؟؟؟


ممنون

----------


## m.mahdim

شاید Mod Rewrite شما خاموشه!

----------


## m.mahdim

برنامه ای هست که پسوند همه ی فایل ها رو به صورت یکجا عوض کنه؟

----------


## ghiravani

> شاید Mod Rewrite شما خاموشه!


ممنون اما چجوری روشن میشه :-)
میشه راهنمایی کنید؟ممنون ;-)

----------


## mamali-mohammad

> همین رو من برای صفحه ادمینم استفاده کردم و درست نمایش می ده ولی اگر  نتونستید این روش رو پیاده سازی کنید یک روش دیگر هم هست که توسط تگ meta  می تونید از نمایش فایل جلوگیری کنید برای مثال اولین فایلی که اجرا می شه و  داخل یک فولدری قرار داد index.php  می باشد که یک تگ متا داخل هد بنویس و  robots رو مساوی  از نوع  NOINDEX,NOFOLLOW,NOARCHIVE  بگذار . با این کار  اگر اسکن کنی دیگه چیزی پیدا نمی شه .


ممنون
اما مشکل اینه که این فایل ها در جستجوی گوگل باید قرار بگیره
من فقط می خوام جلویگیری کنم از اسکن مسیر یه فولدر خاص یا فایل ها

----------


## m.mahdim

> ممنون اما چجوری روشن میشه :-)
> میشه راهنمایی کنید؟ممنون ;-)


 خوب توی همین تاپیک هست دیگه! برگ اول رو خوب بخونید!

----------


## miladkamalabady

من با تغییر در فایل http.conf و برداشتن # و تبدیل همه none ها به All فکر می کنم هنوز mod_rewrite غیر فعاله پیغامی که می ده اینه (البته از Easy PHP  استفاده می کنم)Internal Server Error
 The server encountered an internal error or misconfiguration and was unable to complete your request.

 Please contact the server administrator, admin@localhost and inform them of the time the error occurred, and anything you might have done that may have caused the error.

 More information about this error may be available in the server error log.

----------


## رضا قربانی

توی این آدرس C:\xampp\apache\conf
  فایل httpd.conf

  رو باز می کنیم و باید در داخلش یه تغییر کوچیک بدیم

  بعد # کنار این خط رو بر می داریم :

  LoadModule rewrite_module modules/mod_rewrite.so

  در این حالت مد ریرایت فعال شده است



لطفا قبل سوال پست های قدیمی تر را مشاهده نمایید (پست شماره 2 )

  موفق باشید

----------


## ghasemweb

سلام
من لینکهام به این صورت هستش.


```
index.php?page=x&do=y&id=z
```

میخوام تو نوار آدرس به این صورت تغییر کنه. عبارت تبدیلش چی میشه؟


```
/page/x
```

----------


## رضا قربانی

این برای آدرس استاتیکی که شما می خواهید :

RewriteRule ^page/x index.php?page=x&do=y&id=z [QSA,NC,L]


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

----------


## idocsidocs

> جریان داینامیک بودنش فرق داره و یه سایتی هم هست که این آدرس دهی ها رو بهتون می ده اما الان فراموش کردم


من الان همه آدرسهای سایتم کاربر پسند هستن (به شکل زیر). 
/admin/paper/5

مشکلی که دارم اینه که اگه کاربر بیاد و آدرس لینکهای سنتی رو وارد کنه، 
/admin.pgp?type=paper&id=5
بدون مشکل وارد صفحات سایت می شه. چطور باید این مشکل رو حل کرد؟ یعنی وقتی کاربر لینکهای سنتی رو وارد می کنه، کاربر رو به لینکهای سئو شده ریدایرکت کنم؟

----------


## m.mahdim

خوب بگید مثلا اگر آدرس صفحه یا همین $_SERVER['PHP_SELF']
شامل admin.pgp?type=paper&id=5 بود، کاربر رو به صفحه ی ارور 404 ریدایرکت کنه.

----------


## idocsidocs

> خوب بگید مثلا اگر آدرس صفحه یا همین


یعنی با htaccess نمی شه کاری کرد؟

سایر دوستان نظری ندارن؟

----------


## ghasemweb

میشه در مورد تبدیل لینک ها بیشتر توضیح بدید مثلا اینکه htaccess میاد مقدار href به نحوی که ما میخواییم تبیدیل میکنه و تو نوار آدرس نشون میده یا آدرسی که تو نوار آدرس تایپ میشه رو تبدیل میکنه و به سرور تحویل میده؟

لطفا در این موارد توضیح بدید ممنون میشم

----------


## miladkamalabady

من که گفتم از easy php استفاده می کنم و آدرس xampp ندارم ولی توی فایل conf تغییرات رو اعمال کردم. یعنی # رو برداشتم ولی هنوز کار نمی کنه

----------


## رضا قربانی

> میشه در مورد تبدیل لینک ها بیشتر توضیح بدید مثلا اینکه htaccess میاد مقدار href به نحوی که ما میخواییم تبیدیل میکنه و تو نوار آدرس نشون میده یا آدرسی که تو نوار آدرس تایپ میشه رو تبدیل میکنه و به سرور تحویل میده؟
> 
> لطفا در این موارد توضیح بدید ممنون میشم


 ببین دوست من از دستورات مد ریرایت می تونی آدرس های سایتت رو تغییر بدید . برای مثال شما اگر فایلی با نام news.php داشته باشید می تونید در url و نمایش لینک به هر صورتی که مایلید در بیارید . فارسی - انگلیسی - چینی و.... مثلا می تونید به این صورت آدرس دهی کنید 

www.abc.com/news.php     ====> www.abc.com/news/farsi/read

یا هر چیز دیگه




> من که گفتم از easy php استفاده می کنم و آدرس xampp ندارم ولی توی فایل  conf تغییرات رو اعمال کردم. یعنی # رو برداشتم ولی هنوز کار نمی کنه


من چون از easy php استفاده نکردم تنظیماتش رو نمی دونم.
ولی یه چیز دیگه هم هست . فایل اچ تی اکسز رو باید در ریشه اصلی قرار بدید و برای فعال کردن مد ریرایت هم باید ابتدای صفحه اچ تی اکسز  این کد رو وارد کنی که فکر کنم نکردید :


AddDefaultCharset utf-8
Options +SymLinksIfOwnerMatch
RewriteEngine On

مشکلت حل می شه

موفق باشید

----------


## idocsidocs

Options +SymLinksIfOwnerMatchمن از سرور برتینا استفاده می کنم، این سرور اعصابم رو ریخته به هم، همش ارور می ده و نمی شه تنظیمات دلخواه خودم رو توی فایل htaccess قرار بدم. 

شما چه سروری پیشنهاد می دید؟

----------


## رضا قربانی

در جواب به دوستان قبلی
اگر در سرورهاشون *Options +SymLinksIfOwnerMatch* جواب نداد می تونن این کد رو جایگزین کنن :
Options +FollowSymlinks

----------


## miladkamalabady

آقا هر دو تاشون رو امتحان کردم ( Options +FollowSymlinks و قبلی) ولی باز همون پیغام رو می ده. شاید اگه سرورم رو عوض کنم جواب بده اگه لینکی از سرور دیگه ای  سراغ دارین بگید (با اینکه من سر کلاس با همین easy php کار می کنم و اگه جواب نده و بچه ها سر کلاس بپرسند -احتمالش کمه- اونوقت کمی گیر می کنم)
منتظر جوابهای سبز شما هستم

----------


## jalaladdin

برای جلوگیری ازدسترسی به فایلهای محرمانه درپوشه private چگونه از کد htaccess استفاده کنم کنم؟
 بعنوان مثال آدرس وب سایت این
http://www.majid1.net باشد تمامی فایلهای ویرایش و حذف و ارسال و.......در این پوشه private میباشد حالا اگر آدرس بدین صورت بنویسم http://www.majid1.net/private/delete.php صفحه حذف مطالب نشان داده میشود برای جلوگیری ازمشاهده این فایلها با دادن همچنین آدرسی چکار باید کرد؟

----------


## رضا قربانی

با سلام خدمت تمامی دوستان 

در آموزش صفحه اول همه چیز توضیح داده شده ولی بعضی از بچه ها همچنان سوال می پرسند و گفتم یکبار اینجا توضیح بدم 

د


> وستان ببخشید اینو چند بار امتحان کردم جواب نگرفتم
> 
> اینو چطوری { http://localhost/article/index.php?page=2 } 
> ایجنوری کنم { http://localhost/article/News/2 }


خب اول باید با توابع مد ریرایت آشنایی داشته باشید که در اینجا من به فایل htaccess می گم آقا اگر index.php?page=2  چنین آدرسی بود شما بیا و به این تبدیلش کن News/2 
همیشه باید فایل htaccess  در پوشه مورد نظر ایجاد بشه  . مثلا در این  مثال دوستمون ،  فایل htaccess  در پوشه article  ایجاد می شه و داخلش دستورات رو می نویسیم :

RewriteRule ^News/([^/]*)/([^/]*)/?$ index.php?page=$1 [QSA,NC,L]

حالا موقع لینک دادن در php  دیگه نمی نویسیم :   a href="index.php?page='.$row[id].' iiiiiiiiii

باید ینویسید : http://localhost/article/News/.'$row["id}].'  / '.record.' news

* وقتی دارید از htaccess  استفاده می کنید حتما باید کل لینک ها و آدرس دهی ها به صورت کامل باشه در غیر این صورت عمل نخواهد کرد
* اگر در لوکال هاست دارید تست می کنید باید توابع مد ریرایت رو فعال کنید .  پست شماره دوم همین تاپیک
* فایل htaccess در پوشه مورد نظر فایل ها ذخیره شود
* حتی می تونید به صورت فارسی هم آدرس دهی کنید ولی نباید از کاراکتر خالی استفاده کنید یعنی Space (به کل خطا می گیره)

اینم کد کامل برای پاسخ به این دوست عزیزمون :

AddDefaultCharset utf-8
Options +FollowSymlinks
RewriteEngine On


RewriteRule ^News/([^/]*)/([^/]*)/?$ index.php?page=$1 [QSA,NC,L]



برای اینکه نام یک فایل هم تغییر بدید به این صورت می تونید عمل کنید :

RewriteRule ^Ali/علیرضا/Reza$ news.php [QSA,NC,L]

آدرس news.php می شه www.abc.com/Ali/علیرضا/Reza
این ادیتور نمیذاره واسه شما درست نمایش داده بشه . در کل علیرضا وسط قرار می گیره


امیدوارم بدردتون خورده باشه. 
موفق باشید

----------


## yashar_0007

اقا ممنون اینی که شما میگی رو انجام دادم شد اما یک سوال !!!؟؟؟
یه سایتی بخواد تایتل مطالبش اون بالا چاپ شه باید چی کار کنه !!! همورو دونه دونه باید اینجا بسازی این که نمیشه !!!
منظورم اینه نمی تونه هی بیاد تایتل اصلی شو اینجا تو .htaccses بهزنه که مثلا اگه روزی 10تا مطلب جدید بزاره چجوری باید اینارو درست کنه !!
manzoram ine ke age
page_download.php?id=122   in bashe va titelesh bashe 
بازی اکشن
va page_download.php?id=123
فیلم خوب 
va gheyre 
in id ta 10000 yerozi shayad bere :D
نمیتونم که این و دستی آپدیت کنم آخه

----------


## yashar_0007

سلام، ممنون خودم پیدا کردم D:

----------


## رضا قربانی

در اینجا می خواهیم به این صورت عمل کنیم

 *http://www.abc.com/index.php?page=articles*
 تبدیل بشه به : (یعنی آدرسی که به صورت گت به صفحه مربوطه ارسال کردید رو حذف می کنه و فقط مقدارش رو نمایش میده)   :


 *http://www.abc.com/articles/* 

باید داخل فایل اچ تی اکسس این کد رو قرار بدیم :

RewriteEngine On
RewriteRule ^([a-zA-Z0-9]+)/$ index.php?page=$1



 

*Common variable sets*


*[A-Z]* The variable can have uppercase letters*[a-z]* The variable can have lowercase letters*[0-9]* The variable can have numbers*([a-zA-Z0-9]+)* The variable can have any of the above, and has no limit to the number of characters.
*ترفند خوبیه
موفق باشید
*

----------


## mahmod2000

سلام

درخواست کمک داشتم

میخوام مثل این آدرس

http://alef.ir/vdciupazrt1a5z2.cbct.html?143102

به آدرس : 
http://mydomiain.com/vdciupazrt1a5z2.cbct.html?143102 

تبدیل بشه

تو htaccess چی باید بزنم؟

----------


## رضا قربانی

> سلام
> 
> درخواست کمک داشتم
> 
> میخوام مثل این آدرس
> 
> http://alef.ir/vdciupazrt1a5z2.cbct.html?143102
> 
> به آدرس : 
> ...


باید اینو بزنی و ادامش رو با پی اچ پی بهش اضافه کنی . حالا با توابع هم می شه که توی پست بعدی بهتون یاد می دم
Options +FollowSymLinks
 RewriteEngine on
 RewriteCond %{HTTP_HOST} ^alef\.ir
 RewriteRule ^(.*)$ http://www.mydomain.com/$1 [R=permanent,L]

یا اگر بالایی جواب نداد این :

RewriteEngine on
RewriteCond %{HTTP_HOST} ^alef.ir [NC]
RewriteRule ^(.*)$ http://www.mydomain.com/$1 [L,R=301]


این روش برای اضافه کردن www.  در مبحث سئو هم ارزش خواص خودش رو داره

این هم  همون کد بالاست ولی یه کم از امنیت بالاتری برخورداره که می تونی به جاش استفاده کنی :

RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.alef\.ir [NC]
RewriteRule ^(.*)$ http://www.mydomain.com/$1 [L,R=301]

موفق باشید

----------


## رضا قربانی

دیدم این تاپیک خوابیده گفتم یک آموزش کلی و کد در اختیار برنامه نویسان عزیز بذارم . خیلی کم دیده می شن که از اچ تی اکسس استفاده می کنن که در اشتباه هستند و منم تلاش می کنم تا بلکه چند نفری بهبود پیدا کنند .

خب بریم روی آموزش :


چنین آدرس هایی داریم که می خواییم نام دامنشون رو عوض کنیم

http://domain.com/cgi-bin/38837728.cgi 
*یـــــــــــــــــا*
http://www.domain.com/cgi-bin/38837728.cgi

که می خواییم آدرس دامین تبدیل بشه به : 
http://reza.net/cgi-bin/abc/38837728.cgi


میاییم از این کد استفاده می کنیم :                                              
RewriteEngine on
RewriteCond %{SERVER_NAME} www.domain.com|domain.com
RewriteRule ^/?cgi-bin/38837728.cgi  http://reza.net/cgi-bin/abc/38837728.cgi [R=301,L]




==================================================  ===================================== 



در اینجا می تونید آدرس هایی که پسوند آنها php میباشد رو به html  تبدیل کنید  :

RewriteRule ^(.*)\.php$ /$1.html [R=301,L]
و برعکس
RewriteRule ^(.*)\.html$ $1.php [R=301,L]



==================================================  =====================================




در اینجا شرط میذاریم و می گیم اگر ساعت 16 شد که همون 4 بعداز ظهر میشه سایت رو deny all access کن یا ساده تر بگم مسدود کردن دسترسی در ساعت خاصی از روز

Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{TIME_HOUR} ^16$
RewriteRule ^.*$ - [F,L]




==================================================  ===================================== 


در اینجا می گیم در آدرس ها هر جا _ underscores  یا همون *آندرلاین* داره رو به خاطر منفی خوردنش در سئو بیا و به *- دش* تبدیل کن


Options +FollowSymLinks
RewriteEngine On
RewriteBase /
 
RewriteRule !\.(html|php)$ - [S=4]
RewriteRule ^([^_]*)_([^_]*)_([^_]*)_([^_]*)_(.*)$ $1-$2-$3-$4-$5 [E=uscor:Yes]
RewriteRule ^([^_]*)_([^_]*)_([^_]*)_(.*)$ $1-$2-$3-$4 [E=uscor:Yes]
RewriteRule ^([^_]*)_([^_]*)_(.*)$ $1-$2-$3 [E=uscor:Yes]
RewriteRule ^([^_]*)_(.*)$ $1-$2 [E=uscor:Yes]
 
RewriteCond %{ENV:uscor} ^Yes$



RewriteRule (.*) http://abc.com/$1 [R=301,L]




==================================================  ===================================== 


یک دستور امنیتی :
جلوگیر از اجرا شدن کدها توسط مرورگر زمانی که یک درخواست با X-moz  ارسال می شه
*Stop browser prefetching*


RewriteEngine On
SetEnvIfNoCase X-Forwarded-For .+ proxy=yes
SetEnvIfNoCase X-moz prefetch no_access=yes
 
# block pre-fetch requests with X-moz headers
RewriteCond %{ENV:no_access} yes
RewriteRule .* - [F,L]


==================================================  ===================================== 


جلوگیری از سرقت فایل های  تصویری وب سایت و سرقت پهنای باند شما


RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?abc.com/.*$ [NC]
RewriteRule \.(gif|jpg|swf|flv|png)$ /feed/ [R=302,L]


==================================================  ===================================== 

مانع از دسترسی کاربر به فایل های داخل پوشه .


RewriteEngine On
RewriteBase /
RewriteCond %{THE_REQUEST} ^.+$ [NC]
RewriteRule .* - [F,L]



==================================================  ===================================== 


مانع از دسترسی کاربر به زیر پوشه ها 
*Deny access to anything in a subfolder*

.

RewriteEngine On
RewriteBase /
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^/]+)/.*\ HTTP [NC]
RewriteRule .* - [F,L]



==================================================  ===================================== 


اینم یک کد بسیار ساده و کارآمد 
درخواست های داخلی سایت اگر تا حد 10 درخواست رسید  یک پیام نمایش بده و جلوگیری کنه 
RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteRule .* - [L]

اینم توضیح خارجیش چون شاید یه کم بد توضیح داده باشم:

An error message related to this isRequest exceeded the limit of  10 internal redirects due to probable configuration error. Use  'LimitInternalRecursion' to increase the limit if necessary. Use  'LogLevel debug' to get a backtrace.or you may seeRequest exceeded the limit,probable configuration error,Use 'LogLevel debug' to get a backtrace, orUse 'LimitInternalRecursion' to increase the limit if necessary



==================================================  ===================================== 


اینم چند تا کد امنیتی در برابر درخواست های مخرب کاربر
 برای محافظت از درخواست های مخرب و دیگر رفتار استثماری بررسی می شود.



 RewriteEngine On
 RewriteCond %{THE_REQUEST} ^.*(\\r|\\n|%0A|%0D).* [NC]

 RewriteRule ^(.*)$ - [F,L]




 ==================================================  ===================================== *

یک چیز خیلی جالب که بهش برخوردیم و توضیح می دم.*
*
در  موتور جستجو گر گوگل ، Crauler ها کاربرانی که از سایت هایی  به سایت شما میان ، آدرس هاشون ذخیره می شه و خیلی هم روی امتیاز دادن مثبت  تاثیر داره و اگر آدرس های ذخیره شده از کلماتی که ناشایست بوده و از نظر طراحان امتیاز منفی می خوره استفاده شود  باید از چنین کلماتی جلوگیری کنیم و آدرس های آنها رو قبل از ورود به سایت فیلتر کنیم تا از منفی خوردن در سئو جلوگیری شه .
*

همه جا از امنیت HTTP_REFERER بد گفتن از تابع  RewriteCond میاییم و امنیتش رو برقرار می کنیم:
بعد کلماتی که مایلید فیلتر شود رو تعریف می کنیم
poker  drugs  پوکر  - مواد مخدر و ........

و در آخر عملیات رو اعمال می کنیم

 RewriteEngine On
 RewriteCond %{HTTP_REFERER} ^(.*)(<|>|'|%0A|%0D|%27|%3C|%3E|%00).* [NC,OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?.*(-|.)?adult(-|.).*$  [NC,OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?.*(-|.)?poker(-|.).*$  [NC,OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?.*(-|.)?drugs(-|.).*$  [NC]
 RewriteRule ^(.*)$ - [F,L]



==================================================  =====================================


جلوگیری از سرقت کوکی :

 RewriteEngine On
 RewriteCond %{HTTP_COOKIE} ^.*(<|>|'|%0A|%0D|%27|%3C|%3E|%00).* [NC]
 RewriteRule ^(.*)$ - [F,L]



جلوگیری از درخواست های مخرب :

 RewriteEngine On
 RewriteCond %{REQUEST_URI} ^.*(,|;|:|<|>|">|"<|/|\\\.\.\\).* [NC,OR]
 RewriteCond %{REQUEST_URI} ^.*(\=|\@|\[|\]|\^|\`|\{|\}|\~).* [NC,OR]
 RewriteCond %{REQUEST_URI} ^.*(\'|%0A|%0D|%27|%3C|%3E|%00).* [NC]
 RewriteRule ^(.*)$ - [F,L]





محافظت از سرورتون در برابر پرس و جو ها :

 RewriteEngine On
 RewriteCond %{QUERY_STRING} ^.*(localhost|loopback|127\.0\.0\.1).*                                [NC,OR]
 RewriteCond %{QUERY_STRING} ^.*(\.|\*|;|<|>|'|"|\)|%0A|%0D|%22|%27|%3C|%3E|%00  ).*                 [NC,OR]
 RewriteCond %{QUERY_STRING} ^.*(md5|benchmark|union|select|insert|cast|set|dec  lare|drop|update).* [NC]
 RewriteRule ^(.*)$ - [F,L]




اینم بن کردن آی پی در رنج خاص :


 RewriteEngine On
 RewriteCond %{REMOTE_ADDR} ^123\.$ [OR]
 RewriteCond %{REMOTE_ADDR} ^456\.789\.$ [OR]
 RewriteCond %{REMOTE_ADDR} ^789\.123\.456\.$ [OR]




home page کردن آدرس وب سایت خودتون :


RewriteCond  %{HTTP_USER_AGENT}  ^Mozilla.*
            RewriteRule  ^/$                 /homepage.max.html  [L]
            
            RewriteCond  %{HTTP_USER_AGENT}  ^Lynx.*
            RewriteRule  ^/$                 /homepage.min.html  [L]
            
            RewriteRule  ^/$                 /homepage.std.html  [L] 

 RewriteRule ^(.*)$ - [F,L]




لطفا از سوالات پیش و پا افتاده پرهیز کنید چون در اوایل پست ها آموزش لازم داده شده .
و در آخر شرمنده اگر غلط املایی یا از کلمات درستی استفاده نکردیم . قصدمون فقط آموزش دادن و کمک به برنامه نویسان عزیز بود .
امیدوارم مثبت واقع شده باشد.

موفق باشید
شادزی

----------


## mahmod2000

ببخشید که یه سوال مبتدی میکنم

htaccess  
روی لوکال کار نمیکنه؟
باید حتما روی هاست آپلود بشه ؟

modwrite 
هم فعال کردم

----------


## yones_safari

> ببخشید که یه سوال مبتدی میکنم
> 
> htaccess  
> روی لوکال کار نمیکنه؟
> باید حتما روی هاست آپلود بشه ؟
> 
> modwrite 
> هم فعال کردم


نه کار میکنه.با xampp تست کن.Easy PHP جواب نمیده.

----------


## mahmod2000

با xampp هستم عزیز

ولی انگار هیچیش عمل نمیکنه

فایل htaccess رو گذاشتم کنار فایل php  

درسته دیگه؟

----------


## yones_safari

دادا نام فایل باید htaccess. باشه.شاید نقطه یادت رفته؟؟؟؟؟

----------


## mahmod2000

بله عزیز درسته

الان این ارور رو میده :
*Server error!*

            The server encountered an internal error and was      unable to complete your request. Either the server is     overloaded or there was an error in a CGI script.      
  If you think this is a server error, please contact the webmaster.  
*Error 500*

localhost
     2/12/2012 12:14:06 PM
  Apache/2.2.17 (Win32) mod_ssl/2.2.17 OpenSSL/0.9.8o PHP/5.3.4 mod_perl/2.0.4 Perl/v5.10.1 


این  فایل   htaccess را ضمیمه کردم

----------


## رضا قربانی

خب عزیز من شما در لوکال هاست هستید و آدرس پیشفرض رو دادید www.domain.ir  خب معلومه که ارور می گیره. 

شما اول روی هاست تست بگیر چون مربوط به دامنه می شه اگر جواب گرفتید بیایید توی لوکال و از آدرس لوکال http://localhost/  یا آدرس آی پی لوکال http://127.0.0.1/  استفاده کنید . چون خودم روی لوکال هاست تست نگرفتم.

بعد به این مسیر هم برو باید همش ACTIVATED  سبز رنگ باشه . در این صورت شما با لوکال هاست مشکل ندارید : http://localhost/xampp/  منوی سمت چپ گزینه Status

من اینا همه رو توضیح دادم فقط باید کمی دقت کنید و از پست دادن پرهیز کنید.
بعد کد نویسی شما هم اشتباهه . به این صورت باید بنویسید : *توی پست شماره 60 همین تاپیک توضیح دادم*


AddDefaultCharset utf-8
Options +FollowSymlinks
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.default\.ir [NC]
RewriteRule ^(.*)$ http://www.mydomain.com/$1 [L,R=301]

موفق باشید

----------


## mahmod2000

دوست عزیز الان درست کار کرد

ولی این کد  مگه  واسه جایگزینی  اسمه دامین فقط نیست؟

این ردایرکت  میکنه به آدرس mydomain  

من منظورم  اینه که فقط اسمه لینکایی که میاد  رو عوض کنه  نه اینکه  ردایرکت کنه

----------


## رضا قربانی

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

----------


## maysam3

ببخشید حل شد

----------


## colors

درود

دوستان من یه پوشه دارم که چندتای فایل توشه که در فواصل زمانی نامشخص در طول روز توسط cron jabs اجرا میشن و یه سری کارارو انجام میدن.

الان میخواستم بدونم چطوری با htaccess دسترسی اون پوشه رو محدود کنم که اگه آدرس اون فایلها رو زدن اجرا نشن و یا خطای چیزی بده؟ ( توجه کنید که باید توسط cron jabs اجرا بشن )

----------


## رضا قربانی

در این کد دسترسی پوشه ها رو از کاربر می گیریم :

Options +FollowSymlinks 
 RewriteEngine on 
 RewriteRule ^(.*)$ deny.php [nc] 





تو قسمت بالا اگه کاربر بخواد به هر نحوی وارد یه پوشه بشه ریدایرکت میشه به deny.php 
 در مثال بعدی کاری کنیم که فقط به فایل های خاصی دسترسی داشته باشه و بجز اون هر فایلی خواست باز کنه ارور بده : 


Options +FollowSymlinks 
 RewriteEngine On 
 rewritecond %{REQUEST_FILENAME} !^(.+).css$ 
 rewritecond %{REQUEST_FILENAME} !^(.+).js$ 
 rewritecond %{REQUEST_FILENAME} !file.php$ 
 RewriteRule ^(.+)$ /deny/ [nc] 


تو دستور بالا ما گفتیم فقط به فایل هایCss Js و فایل file.php اجازه  بده  که توسط کاربر فراخوانی بشه در غیر اینصورت ریدایرکت کنش به پوشه  /deny/ .

جدا از اینا پست شماره 61 ما که توی صفحه 7 ایجاد شده هم یه نگاه بنداز چون یک روش دیگه هم توضیح دادم.

موفق باشید

----------


## colors

مثل همیشه عالی بود - ممنون

این مثال دوم نمیشه عکسش رو گذاشت؟

----------


## رضا قربانی

! علامت معکوسه . حذفش کنی میشه همین چیزی که شما می خواهید.

----------


## رضا قربانی

درخواستی از دوستان :ی

با این کد می تونید مقدار حجم آپلود فایل و اطلاعات ارسالی در سایت که با php نوشته شده را به مقدار 25 مگابایت افزایش دهید و یا بیشتر :
(کد روزه : برای php5  به بالا)


<Directory />
    Options +FollowSymLinks
    AllowOverride All
</Directory>


<IfModule mod_php5.c>
php_value max_execution_time "60"
php_value max_input_time "60"
php_value upload_max_filesize "25M"
php_value post_max_size "25M"
</IfModule>


البته روش های زیادی برای این کار وجود داره که این به روش اچ تی اکسسه.

این کد ها هم هر کدوم یک کاری انجام میده(مثلا در ارتباط با استفاده سیشن و کوکی و ...) :
php_value post_max_size 200M
php_value upload_max_filesize 200M
php_value memory_limit 300M
php_value output_buffering on
php_value max_execution_time 259200
php_value max_input_time 259200
php_value session.cookie_lifetime 0
php_value session.gc_maxlifetime 259200
php_value default_socket_timeout 259200

و و و ...

موفق باشید

----------


## nader3

سلام دوستان یکی میتونه به من کمک کنه؟ من از سرور ویندوز استفاده می کنم به زور تونستم htaccess  رو به web.config تبدیل کنم ، اما الان وقتی ؟ رو به / تبدیل می کنم فایل های جاوا اسکریپت و سی اس اس رو نمی خونه

----------


## colors

درود

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

یعنی به جای اینکه اینطور آدرس بدید
<link rel="stylesheet" type="text/css" href="css/style.css"/>
باید اینجوری آدرس بدید
<link rel="stylesheet" type="text/css" href="http://www.mysite.com/css/page/site.css"/>

البته میتونید از تگ base در بخش head استفاده کنید و آدرس دهی هارو تغییر ندید. فقط کافیه آدرس وب سایت خود رو به تگ base بدید.

مثل این
<base href="http://www.mysite.com/"/>

----------


## mrm109

آقا این کد من کار نمیکنه مشکلش چیه؟

RewriteEngine on
RewriteRule ^profile/userid/([0-9]+) www.tehranartgallery.com/profile.php?userid=$1 [NC]

----------


## mrm109

> سلام فکرکنم یک علامت دلار نذاشتی
> فکرکنم این طوری باید باشه  :
> RewriteRule ^profile/userid/([0-9]+)$  http://www.tehranartgallery.com/profile.php?userid=$1 [NC]


آقا متاسفانه بازم کار نمیکنه لطفا راهنمایی کنید

----------


## رضا قربانی

باید به این صورت بنویسید :


اگر محتویات گت شما String بود :

RewriteRule ^profile/userid/([^/]*)$  profile.php?userid=$1 [L]

آدرس دهی شما می شه : *www.abc.com/profile/userid/Reza/*
اگر محتویات گت شما int یا یعنی فقط عدد بود  :

RewriteRule ^profile/userid/([^/]*)/([^/]*)/?$  profile.php?userid=$1 [QSA,NC,L]

آدرس دهی شما می شه : *www.abc.com/profile/userid/1/*

موفق باشید

----------


## mrm109

> باید به این صورت بنویسید :
> 
> 
> اگر محتویات گت شما String بود :
> 
> RewriteRule ^profile/userid/([^/]*)$  profile.php?userid=$1 [L]
> 
> آدرس دهی شما می شه : *www.abc.com/profile/userid/Reza/*
> اگر محتویات گت شما int یا یعنی فقط عدد بود  :
> ...


ممنون از راهنماییتون ولی خودتون این لینکو چک کنید ببینید باز جواب نمیده

http://www.tehranartgallery.com/profile.php?userid=80

http://www.tehranartgallery.com/profile/userid/80/

----------


## رضا قربانی

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

باید به این شکل لینک بدید
چون عددیه باید از این کد ریرایت استفاده کنیم :

RewriteRule ^profile/userid/([^/]*)/([^/]*)/?$  profile.php?userid=$1 [QSA,NC,L]
و این آدرس دهی :

href="www.abc.com/profile/userid/'.$row["id"].'/

یادتون باشه در انتها */* بذارید.

من تست کردم مشکلی نداشت

----------


## mrm109

> دوست عزیز شما به چه صورتی لینک میدید ؟
> 
> باید به این شکل لینک بدید
> چون عددیه باید از این کد ریرایت استفاده کنیم :
> 
> RewriteRule ^profile/userid/([^/]*)/([^/]*)/?$  profile.php?userid=$1 [QSA,NC,L]
> و این آدرس دهی :
> 
> href="www.abc.com/profile/userid/'.$row["id"].'/
> ...


بله منم همیک کد را استفاده کردم ولی تو  2 تا لینک بالا که نمونه گذاشتم دیدید که جواب نداد

----------


## mrm109

> عزیز من می گم تست کردم مشکلی نداشته . سه تا پست ارسال کردید هنوز نحوه لینک دادن رو برامون نفرستادید تا ما ببینیم چی کار کردی و مشکلت چیه.
> 
> نحوه لینک دادن در php که از بانک می خونید و لینک داینامیک تولید می کنید رو اینجا برامون بذارید تا راهنماییتون کنیم . در غیر این صورت نمیشه کاری کرد


آقا لینک داینامیکو هنوز درست نکردم فعلا دارم تست میکنم که لینکو چه مدلی درست کنم.ضمن اینکه نیازی به اون نیست فعلا.الان اون 2 تا لینکی که بالا دادم شما میگی تست کردی مشکلی نداره  واسه من کار نمیکنه.

----------


## رضا قربانی

عجب...

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

از پست های spam خودداری نمایید

باتشکر

----------


## mr.wolf

سلام دوستان
من توی سایتم کلی جاوا استفاده کردم.
بعضی هاش رو توی فایل های js ذخیره کردم و توی صفحه فراخوانی میکنم
جدیدا متوجه شدم که بعضی سایت های همکار اومدن دقیقا همون کدهای js من رو از توی فایل ها کپی پیست کردن دارن استفاده می کنن.
آیا از طریق htaccess میشه دسترسی مستقیم به فایل های js رو محدود کرد به نحویکه سورس اون ها قابل نمایش نباشه ولی بتونه عملیات مربوطه رو در صفحه اجرا کنه ؟؟؟

----------


## MSN_Issue

> سلام دوستان
> من توی سایتم کلی جاوا استفاده کردم.
> بعضی هاش رو توی فایل های js ذخیره کردم و توی صفحه فراخوانی میکنم
> جدیدا متوجه شدم که بعضی سایت های همکار اومدن دقیقا همون کدهای js من رو از توی فایل ها کپی پیست کردن دارن استفاده می کنن.
> آیا از طریق htaccess میشه دسترسی مستقیم به فایل های js رو محدود کرد به نحویکه سورس اون ها قابل نمایش نباشه ولی بتونه عملیات مربوطه رو در صفحه اجرا کنه ؟؟؟


 خیر دوست عزیز
زبان های کلاینت ساید (مثل جاوا اسکریپت و سی اس اس) باید کاملا در مرورگر کلاینت لود بشند و برای همین نمیشه جلوی لود شدنشون رو گرفت.

----------


## mrm109

دوستان کد زیر که نوشتم به لینکی که میخوام ریدایرکت میکنه ولی ریرایت نمیشه.مشکل چیه چجوری باید بنویسم

RewriteEngine on
RewriteRule ^tag/sec/(.*)$ ../../../tag.php?sec=$1 [R]

----------


## idocsidocs

من می خوام هر درخواستی که با test شروع نمی شه به ریرایت مد برن ولی اینطور نمی شه. مشکل چسه؟

RewriteCond %{QUERY_STRING} !^test/

RewriteRule ^([^\/]+)/([^\/]+)$ index.php?c1=$1&c2=$2 [NC,L]

----------


## masato

با سلام 
من میخوام این آدرس رو   http://localhost/mvc/index.php?rt=blog/view   اینم لینکم هست


```
<a href="http://localhost/mvc/index.php?rt=blog/view">blog</a>
```

 به این تغییر بدم 
localhost/mvc/blog/view
همه تاپیک ها که به این موضوع مربوط میشود رو هم امتحان کردم اما نشد لامصب :متعجب: 
مدریرایت هم فعال این فایلhtaccess.zip
با تشکر

----------


## masato

سلام 
آقا یکی یه نگاه بندازه :افسرده: 
اینم خطایی که آپاچی میده
127.0.0.1 - - [26/Jul/2012:10:11:42 +0430] "GET /mvc/index.php?rt=blog/view HTTP/1.1" 200 67
تشکر

----------


## رضا قربانی

> من می خوام هر درخواستی که با test شروع نمی شه به ریرایت مد برن ولی اینطور نمی شه. مشکل چسه؟
> 
> 1
> 2
> 3
> RewriteCond %{QUERY_STRING} !^test/
> 
> RewriteRule ^([^\/]+)/([^\/]+)$ index.php?c1=$1&c2=$2 [NC,L]


نحوه شرط گذاری شما اشتباهه . باید دقیق و کامل بنویسید . خشک و خالی با نوشتن test جواب نمیگیرید .





> با سلام 
> من میخوام این آدرس رو   http://localhost/mvc/index.php?rt=blog/view   اینم لینکم هست
>      کد HTML:
> <a href="http://localhost/mvc/index.php?rt=blog/view">blog</a> 
>   به این تغییر بدم 
> localhost/mvc/blog/view
> همه تاپیک ها که به این موضوع مربوط میشود رو هم امتحان کردم اما نشد لامصب
> مدریرایت هم فعال این فایلhtaccess.zip
> با تشکر


فایل اچ تی اکسس باید داخل فولدر mvc ایجاد کنید و چنین کدی رو بنویسید :
RewriteRule ^([^/]*)$ index.php?rt=$1 [L]

یا

RewriteRule ^([^/]*)/([^/]*)/?$ index.php?rt=$1 [QSA,NC,L]


موقع فراخوانی هم میگید
echo'<a href="www.abc.com/mvc/'.$row["blog"].'/'.$row["view"].'"> abc </a>';

----------


## رضا قربانی

یک موقع هایی آدرس بعضی از صفحاتتون تغییر می کنه با این کد می تونید ریدایرکت کنید به آدرس جدید :

RewriteRule ^old_page.php$ http://new_domain.com/new_page.php [R=301,NC] 

====================
چنین آدرسی داریم :
http://mydomain.com/blog.php?categor...h=05&year=2008
که می خواهیم تبدیل بشه به :
http://mydomain.com/news/05/2008

RewriteRule ^blog/([^/]+)/([^/]+)$ blog.php?category=$1&article_id=$2 [NC] 

================

یک آدرس گت داریم که نمی خواهیم نمایش داده بشه و بعد از تصحیح پسوند هم به html تبدیل کنیم چنین آدرسی داریم : 
www.abc.com/reza.php?get=test
که می خواهیم تبدیل بشه به :
www.abc.com/test.html

RewriteRule ^([^/]*)\.html$ reza.php?get=$1 [L]

در این سایت از اینگونه مد ریرایت ها استفاده شده که می تونید ببینید : http://www.amolboresh.com/%D8%AF%D9%...%A9%D9%86.html
تا مطالب بعدی
موفق و پیروز باشید

----------


## رضا قربانی

> سلام داش رضای گــل
> آقا ممنون از آموزشای خوبت
> یه سوال من میخوام فاصله ای که توی آدرس بعضی لینک ها هست (20%)رو به خط فاصله تبدیل کنم
> میشه یه توضیح بدی
> بازم ممنون


 
اگر دو تا آدرس گت داشتیRewriteRule ^([A-Za-z-\s]+)/([A-Za-z-\s]+)$ /index.php?lastname=$1&name=$2 [QSA,L]

اگر یکی آدرس گت داشتی
RewriteRule ^([A-Za-z-\s]+)$ /html/index.php?lastname=$1 [QSA,L]

 ولی بهینه تر و رایج تر اینه که با php  بگی هر جا کاراکتر خالی بود به جاش یک *آندرلاین* بذارید : (دش یا - در سئو منسوخ شده)

str_replace("_"," ",$row["test"])
شما باید با php این کار رو انجام بدید . چون با دستورات ریرایت یک آدرس جدید درست میشه یعنی شما با دو آدرس به صفحه خودتون لینک میشید .

----------


## mrm109

سلام 
من ریرایت رو انجام دادم درست کار میکنه و صفحه ای که می خوام رو میاره
فقط مشکل اینجاست که css  صفحه لود نمیشه و فقط متن اوون صفحه میاد.

راهنمایی کنید مشکل کجاست
ممنون

----------


## .fatemeh

جایی که css رو لینک کردین آدرس دهی کامل انجام بدین یا از تگ <base> استفاده کنید.

----------


## mrm109

> جایی که css رو لینک کردین آدرس دهی کامل انجام بدین یا از تگ <base> استفاده کنید.


مرسی عزیزم از راهنماییت با یه تگ بیس ساده همه چی حل شد.فدااات

----------


## mypingle

درود
من مطالب رو خوندم ولی به سوالی که توی ذهنم بود جوابی داده نشد.

توی صفحه اول گوگل یک لوگویی هست  که لینکش اینه :

https://www.google.com/images/srpr/logo3w.png

خوب حالا گوگل یه کاری کرده که شما فقط میتونی این لوگو رو ببینی یعنی دیگه نمیتونیم فایل ها و یا عکس هایی که توی این پوشه قرار داره رو ببینیم تا وقتی که آدرس دقیق اون عکس رو بدونیم . حال اگه به پوشه های دیگه برید میبینید که Error 404 میده یعنی شبیه این صفحه :

https://www.google.com/images/srpr

حال چطوری میشه همچین کاری رو روی سایت خودم انجام بدم
ممنون میشم

----------


## jionelmessi

من  اینارو هوندم  میشه  اینم توضیح  بدین  چیکا  میکنه؟
    RewriteBase /cloob/
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?%{QUERY_STRING} [NE,L]


این  !-d   یا !-f     و این          
QUERY_STRING

چیکار  میکنه  تو اون دستور

----------


## mohammad-gh

سلام
متاسفانه نتونستم از مطالب ارزشمندتون در مورد زیر اسفاده کنم

اگر توجه کنید در وبلاگها میشه یک ادرس شخصی رو مثل www.test.com
به وبلاگت وصل کنی مثل ادرس http://sana-net.ir/blogs.php?id=149

به صورتی که با زدن آدرس شخصی به صفحه وبلاگت می روی و حتی آدرس وب لاگ هم نشون داده نمیشه

اگر ممکن است در مورد این کار کمی راهنمایی کنید و اینکه این کار فقط با httascc میشه انجام بشه و در طرف دامنه باید چه کارهایی انجام دهیم (تنظیم دی ان اس و  ...)

----------


## Tarragon

سلام می شه یه کد برای استفاده از subdomain که همه جا( از جمله لوکال هاست) کار کنه بدید؟
مثلا test.example.com بشه example.com/?sub=test 
تشکر.

----------


## prg_mail

نحوه تبدیل این لینک :

project.php?catid=1

به این لینک :
category/1/مدیریت/


توضیح بدین و بفرمایید اگر کاربر لینک دوم رو اجرا کنه از کجا تعیین کنیم کدوم فایل روی هاست اجرا بشه ؟
اولی که معلومه project.php اجرا میشه دومی چی ؟

----------


## morteza_carefree

دوستان من به اين شکل کار کردم ولي جواب ندادالبته بگم که روي 
easyphp 5.3.8.0
کار کردم آيا ميشه از اون باشه ؟

RewriteEngine on

RewriteRule ^(.+)/(.+)/?$ last2.php?id=$1&q=$2 [NC,L]

----------


## php_love

دسستون درد نکنه لذت بردم

----------


## prg_mail

با اینکه کسی اینجا جواب ما رو نداد اما با سعی خودم سایت کلا لینکاش فارسی شد :  :خجالت: 
http://www.POROJE.Com

----------


## رضا قربانی

> با اینکه کسی اینجا جواب ما رو نداد اما با سعی خودم سایت کلا لینکاش فارسی شد : 
> http://www.POROJE.Com


عجب  :افسرده: 
همه چی رو که* آماده و منظم* با توضیحات کافی و تست شب بیداری در اختیارتون گذاشتم .

امان از دست چنین کاربرانی ، شماها باعث میشید حق خیلی های دیگه ....

* تازه این پست شما جنبه تبلیغاتی داره* 
واقعا که

----------


## prg_mail

جناب رضا قربانی عزیز ضمن تشکر از زحمات جنابعالی لازم به ذکره که شما در این تاپیک خیلی زحمت کشیدین و کار خیلارو راه انداختین من از طرف اون ها هم از شما سپاسگزارم- اما بنده در تاریخ دوشنبه 25 دی 1391 19:18 عصر در پست شماره 102 سوالی پرسیدم که تا تاریخ چهارشنبه 09 اسفند 1391 22:08 عصر !!!!! کسی به اون جواب نداد باورتون میشه ؟! یعنی 45 روز ! و در این مدت خودم حلش کردم-از این بابت نوشتم کسی به ما کمک نکرد- البته 1 نکته دیگروهم در نظر داشته باشید :  من گفتم کسی کمکم نکرد نه صرفا جناب قربانی کمکم نکرد - بازم از زحمات شما در آموزش با ما تازه کارا سپاسگزارم، قصد پست تبلیغاتی دادن ندارم اونو دادم به عنوان نمونه سایرین بررسی کنند.

با تشکر از شما

----------


## رضا قربانی

یکی از سایت های مفید که می تونید ازش توی ساختن آدرس ها کمک بگیرید ، البته با کمی تغییرات بر روی کدهایی که بهتون میده :
http://www.generateit.net/mod-rewrite/
واسه تمرین عالی هست و خیلی کمکتون می کنه
موفق باشید

----------


## hanijafari

کار این کد چی هست؟
<ifModule mod_expires.c>
    ExpiresActive On
    ExpiresDefault "access plus 300 days"
</ifModule>

----------


## Tarragon

فکر کنم می گه صفحات تاریخ انقضا داشته باشند و مدتش هم بیشتر از 300 روز باشه.

----------


## hanijafari

> فکر کنم می گه صفحات تاریخ انقضا داشته باشند و مدتش هم بیشتر از 300 روز باشه.


یعنی سایت بعد از 300 روز دیگه بالا نیاد یا چیزه دیگه ای؟
چون توی تمام فولدرهای رو سایتم این تو فایل هیت اکسس هست!!!
اگر کلا هیت اکسس رو از رو هاست پاک کنم یا مقادیر همه رو خالی بزارم که مشکلی پیش نمیاد؟
با تشکر

----------


## Mohsen71

سلام دوستان
یه سوال فنی!

من با این دستورات توی htaccess کاری کردم که عکس های آپلود شده توی آپلودسنترم، فقط و فقط برای دامین خودم نمایش داده بشن!
حالا یه ضعف داره و یه کمبود!
ضعفش : وقتی کسی مستقیما میخواد یه عکسی رو ببینه، بازم پیغام خطا میده که عکس فقط توی فلان دامین نمایش داده میشه!
یعنی میخوام علاوه بر اینکه توی دامین مشخص شده نمایش داده بشه، هر کسی که لینک مستقیم رو داره و میخواد توی مرورگر مستقیما عکس رو ببینه هم بتونه باز کنه!
بر فرض لینک رو اینجوری توی مرورگر وارد کنه : http://Site.com/image.jpg

کمبود : کمبودش اینه که میخوام علاوه بر نشون دادن عکس دلخواهم که توش نوشته دسترسی به این عکس فقط از فلان سایت امکان پذیر هست، لینک هم بشه!
که کاربرا رو اون لینک کلیک کنن و بیان تو سایت.
کسی میتونه منو راهنمایی کنه؟

----------


## abbas-software

سلام دوستان
چجوری میتونم با ارسال اطلاعات از یک سایت دیگه(مثلا فرمی در صفحه وبلاگ)، به یک صفحه php در سایتم، اونو اجرا کنم و ورودی هاشو از وبلاگ بگیرم!!!!؟ 
البته در حالتی که کد
 RewriteRule .*\.(.*)$ http://www.example.ir [R,NC]

رو بر میدارم درست کار میکنه و اجرا میشه!!! (این کد فکر کنم در واقع دسترسی مستقیم یا دسترسی از سایت های دیگر رو می بنده! درسته؟)
ولی من میخوام با وجود این کد هم بتونم اون کار رو انجام بدم! (البته اگه بشه که صفحه ی php، فقط به آدرس مورد نظر من جواب بده که بهتر میشه! یعنی با مشخص کردن آدرس یا آی پی اون)

----------


## رضا قربانی

با سلام و خسته نباشید خدمت همگی دوستان  :قلب: 
بدون مقدمه
جریان کار این موضوع زمانی رخ می دهد که افرادی بدون اینکه عکسی را دانلود و بر روی سرور خود آپلود کنند، به راحتی و با لینک کردن آن عکس از سایت شما باعث مصرف بیش از حد انتظار پهنای باند می شوند. مخصوصا اگر مطلب شما مطلبی پر بیننده باشد و چندین بار این کار انجام شود. اما جای نگرانی نیست.

 برای جلوگیری از این موضوع می توانید از فایل .htaccess موجود در فولدر اصلی هاست خود استفاده کنید :

RewriteEngine on

RewriteCond %{HTTP_REFERER} !^$

RewriteCond %{HTTP_REFERER} !^http://(www\.)?yourdomain.com/.*$ [NC]

RewriteRule \.(gif|jpg|png)$ - [F]


موفق باشید

----------


## aminbrleevb

با سلام
دوستان سوال من در مورد RewriteRule   بود  البته یکم فرق داره
تا الان من با این دستور میومدیم و آدرس زیر رو تبدیل به آدرس 2 می کردیم 

آدرس قبلی
localhost/index.php?fbc=25
کد httaccess
RewriteRule ^fbc=(.*)?$ ./index.php?fbc=$1 [L]
آدرس جدید
localhost/fbc=25&

تا اینجا مشکلی نیست مشکل از اینجا شروع میشه که فرض رو بر این بزارین که ما در آدرس اولیه 2 متغیر  داشته باشیم مثلا 

localhost/index.php?fbc=25&cn=15

حال من می خواهم یک همچین آدرسی رو بدیت بیاورم 

localhost/cn=12


یعنی کدی می خواهم که متغیر اولیه رو نادیده بگیره 
شاید سوالم مفهمو نباشه ولی فرض کنید که ما در سایتون یک آدرس داریم  با این نام 
localhost/num.html
که به جای num یک عدد از 1 تا 10 قرار دارد حال می خواهم کاری کنم که وقتی ما آدرس زیر رو وارد می کنیم 
localhost/sd=65&num=5
صفحه ای رو باز کند که با 5.html  هست
امیدوارم منطورم رو متوجه شده باشید   تاکید میکنم که num متغیر اول نباشد
با تشکر

----------


## rash44

سلام
برای ایجاد ساب دامین مجازی wild card DNS بر روی سرور اشتراکی فعال هست .

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

RewriteEngine On RewriteCond %{HTTP_HOST} ^([^.]+).web.ir$ [NC] RewriteCond %1 !^(www|ftp|mail)$ [NC] RewriteRule ^.*$ http://web.ir/blog/blog.php?id=%1 


از کد زیر هم استفاده کردم :

RewriteEngine On
RewriteCond ${HTTP_HOST} ^([^.]+).web.ir$ [NC]
RewriteCond $1 !^(www|ftp|mail)$ [NC]
RewriteRule ^(.*)$ http://web.ir/blog/blog.php?id=$1  



با وارد کردن ساب دامین ها ، صفحه پیش فرض سرور نمایش داده میشه

----------


## rash44

> سلام
> برای ایجاد ساب دامین مجازی wild card DNS بر روی سرور اشتراکی فعال هست .
> 
> از این کد استفاده می کنم :
> 
> RewriteEngine On RewriteCond %{HTTP_HOST} ^([^.]+).web.ir$ [NC] RewriteCond %1 !^(www|ftp|mail)$ [NC] RewriteRule ^.*$ http://web.ir/blog/blog.php?id=%1 
> 
> 
> از کد زیر هم استفاده کردم :
> ...


لطفا راهنمائی کنید

----------


## رضا قربانی

> تا اینجا مشکلی نیست مشکل از اینجا شروع میشه که فرض رو بر این بزارین که ما در آدرس اولیه 2 متغیر  داشته باشیم مثلا 
> 
> localhost/index.php?fbc=25&cn=15
> 
> 
> 
> 
> حال من می خواهم یک همچین آدرسی رو بدیت بیاورم 
> 
> localhost/cn=12


داداشی گل وقتی دو تا گت ارسال می کنید دیگه نمیشه موقع تغییر آدرس یکی از گت ها رو حذف کنید  localhost/cn=12  (یکی دیگه رو کجا باید جا بدیم ؟) برای ارسال دو گت می تونید از این کد استفاده کنید :
RewriteRule ^([^-]*)-([^-]*)/?\.html$ product.php?view=$1&product=$2 [L]

خروجیش میشه www.abc.com/130/cnc.html
یا برای سئو هم می تونید به این شکل تغییر بدید abc.com/130-cnc.html
و محتویات مقدار گت ها هم از پست شماره 80 همین تاپیک

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

----------


## رضا قربانی

> سلام
> برای ایجاد ساب دامین مجازی wild card DNS بر روی سرور اشتراکی فعال هست .
> 
> از این کد استفاده می کنم :
> 
> RewriteEngine On RewriteCond %{HTTP_HOST} ^([^.]+).web.ir$ [NC] RewriteCond %1 !^(www|ftp|mail)$ [NC] RewriteRule ^.*$ http://web.ir/blog/blog.php?id=%1 
> 
> 
> از کد زیر هم استفاده کردم :
> ...


 دوست من از سرور اشتراکی استفاده نکنید و تست بگیرید .

----------


## رضا قربانی

*یک نکته مهم* که خیلی از بچه ها به مشکل می خورن و پیام میدن اینه که در بعضی از مواقع (مثلا برای دو زبانه بودن سایت) نیاز دارن تا دو تا فایل .htaccess در فولدر های متفاوت ایجاد کنند (یکی در ریشه سایت و دیگری در فولدر)در اینجا به ارور 500 بر می خورند :

 که راه حل مشکل اینه که وقتی فایل .htaccess رو در فولدر جدا ایجاد می کنید در ابتدای فایل از این کدها استفاده نکنید (مستقیما ریرایت رو بنویسید) :
AddDefaultCharset utf-8
Options +FollowSymlinks
RewriteEngine On
همون در ریشه سایت در اولین فایل استفاده کردید کافیه ،  و ما بقیه فایل های htaccess از فایلی که در ریشه سایت هست پیروی می کنند .

موفق باشید

----------


## redhat2

من دارم یه mvc مینویسم ، میخوام تمامی url هایی که تایپ می کنم در قسمت آدرس بار ، Rewrite بشه روی index.php یعنی به این صورت : 

index/controller یا index/example یعنی rewrite بشه روی index.php ولی یه صفحه ی هست به نام 404.php که نمی خوام Rerwite بشه برای اینکه تنها فقط این صفحه یعنی میزنم index/404.php rewite نشه باید چیکار 

کنم ، یعنی اطلاعات صفحه ی 404.php را نشون بده ؟

----------


## رضا قربانی

اینطوری که نمیشه . شما باید از پایه  بیاموزید و جریان کار رو توی دستتون بگیرید . اینطوری که شما بیان کردید متوجه شدم که چیزی زیادی در این مورد نمیدونید . کلیه اطلاعات در این تاپیک موجوده و هر عملی هم که می خواهین میتونید انجام بدید  ، و فقط کافیه که خودتون تلاش و استفاده کنید .

موفق باشید دوست من

----------


## redhat2

سلام به دوستان ، یه سوال داشتم ، 

این فایل htaccess منه : 


<Files .htaccess>

order allow,deny

deny from all

</Files> 

RewriteEngine on

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

Options -Indexes

RewriteRule ^(.*)$ index.php?url=$1 [L,QSA] 


من یه mvc دارم ، 

که مثلا یکی از Controller ها به این صورت هست : 

category/show/music من میخوام Action که اینجا show هست را از url حذف کنم و این را تبدیل کنم به این حالت : 
category/music میشه یکی برام htaccess را برام بازنویس کنه ؟ ممنون.

----------


## h.rezaee

سلام. یک سوال؟؟؟؟؟؟؟؟
کل تاپیک رو خوندم ولی نیافتم. نمی دونم شاید بود بنده متوجه نشدم.
ببینید اگه بخوایم سطح دسترسی رو از طریق آدرس دهی ببندیم ولی از طریق خود برنامه این امکان وجود داشته باشه چکار باید بکنیم.
مثلا ما یک پوشه به اسم Admin داریم که در اون فایل هایی مثل login.php ، index.php ، txtmanagement.php و ..... دیگه باشه. ما می خواهیم کاری کنیم که دیگه با ادرس دهی مستقیم ( مثلا در آدرس بار نوشتیم http://localhost/foldername/admin/txtmanagement.php ) این صفحه باز نشود ولی از طریق خود برنامه امکان دسترسی وجود داشته باشد.
ببینید بنده یک سری کدهای اینجا رو تست کردم یا جواب نمی داد یا سطح دسترسی رو به طور کلی می گرفت یعنی حتی کاربر آدرس http://localhost/foldername/admin رو وارد می کرد هیچ چیز براش نمایش داده نمی شد!!!!!!!!!!!!!!!!!!!
ممنون میشم اگه راهنمایی بفرمایید.

----------


## رضا قربانی

> من دارم یه mvc مینویسم ، میخوام تمامی url هایی که  تایپ می کنم در قسمت آدرس بار ، Rewrite بشه روی index.php یعنی به این  صورت : 
> 
> index/controller یا index/example یعنی rewrite بشه روی index.php ولی یه  صفحه ی هست به نام 404.php که نمی خوام Rerwite بشه برای اینکه تنها فقط  این صفحه یعنی میزنم index/404.php rewite نشه باید چیکار 
> 
> کنم ، یعنی اطلاعات صفحه ی 404.php را نشون بده ؟


باید موقع اجرا صفحه 404  رو به .htm در url وارد و از کد زیر استفاده نمایید :

RewriteRule ^404\.htm$ /404.php [L]
موفق باشید

----------


## رضا قربانی

> ببینید اگه بخوایم سطح دسترسی رو از طریق آدرس دهی ببندیم ولی از طریق خود برنامه این امکان وجود داشته باشه چکار باید بکنیم.
> مثلا ما یک پوشه به اسم Admin داریم که در اون فایل هایی مثل login.php ،  index.php ، txtmanagement.php و ..... دیگه باشه. ما می خواهیم کاری کنیم  که دیگه با ادرس دهی مستقیم ( مثلا در آدرس بار نوشتیم http://localhost/foldername/admin/txtmanagement.php ) این صفحه باز نشود ولی از طریق خود برنامه امکان دسترسی وجود داشته باشد.


دوست من آدرس اصلی رو فقط و فقط خود شما میدونید و کسی هم نمیتونه در بیاره در صورتی که جایی از سایتتون لینک نکنید
ببینید الآن شما با این حرفتون کل فایل اچ تی اکسس رو زیر سوال بردید . خب وقتی میخواهید فقط از یک آدرس وارد بشه چه لزومی داره ریرایتش کنید همون آدرس اصلی رو وارد کنید  :لبخند گشاده!:  یه کم بیشتر در مورد این گونه فایل تحقیق کنید .
موفق باشید

----------


## learn30t

البنه یکی دیگه از دلایل اینترنال ارور میتونه مشکل خوب کانفیگ نشدن htaccess باشه

----------


## abolfazlso

واسه درست کردن htaccess از این سایت استفاده کنید خیلی جالبه و کار سئو کردنو اسون کردhttp://www.htaccesseditor.com/en.shtml

----------


## Veteran

این کد htaccess من


```

Options +FollowSymlinks
RewriteEngine On
RewriteBase /CMS
RewriteRule ^more/([^/]*)/([^/]*)$ more.php?more=$1&title=$2 [L]

RewriteRule ^Category/([^/]*)/([^/]*)$ index.php?Category=$1&title=$2 [L]

RewriteRule ^([^/]*)$ index.php?view=$1 [L]
```

موقع باز کردن سایت در لوکال ادرس های فایل ها هم طبق htaccess تغییر میکنن و دیگه لود نمیشن

```
<script type="text/javascript" src="frontSite/js/style.js"></script>
```

سایت رو باز میکنم بعد با فایرباگ که چک میکنم.

"NetworkError: 404 Not Found - http://localhost:81/CMS/more/2/frontSite/css/style.css"

مشکل کجاس ؟

----------


## رضا قربانی

آدرس دهی های کل سایتت باید به صورت کامل باشه.
آدرس فراخوانی فایل ها (css-js-jquery - .... همه) 
آدرس دهی به لینک ها ....

مثال :
<script type="text/javascript" src="http://www.test.com/frontSite/js/style.js"></script>or
<a href="http://www.test.com/contact.html" > link</a

----------


## Veteran

ممنون از جوابتون
با 

```
    <base href="http://localhost:81/CMS/">
```

مشکل برطرف شذ.

----------


## ershad_tb

راهی هست که دایرکتوری با دستور Options +Indexes برای همه بسته باشه ولی برای آی پی های بخصوص باز باشه ؟

----------


## sajadpm

با سلام 

من بر روی هاست ام 2 دامنه دارم که می خواهم یکی از دامنه ها فقط یک دایرکتوری خاص رو باز کنه و به بقیه دایرکتوری ها دسترسی نداشته باشه ! چجوری می توانم این کارو با htaccess انجام بدم . سپاس فراوان

----------


## رضا قربانی

> با سلام 
> 
> من بر روی هاست ام 2 دامنه دارم که می خواهم یکی از دامنه ها فقط یک دایرکتوری خاص رو باز کنه و به بقیه دایرکتوری ها دسترسی نداشته باشه ! چجوری می توانم این کارو با htaccess انجام بدم . سپاس فراوان


 خب موقع نوشتن دستورات htaccess آدرس دهی های فایل هارو همراه با آدرس دامنه بدید (به صورت کامل)

----------


## sajadpm

ببخشید منظورتون رو متوجه شدم . فرض کنید من دو عدد دامنه به نام های site1.com و site2.org دارم که هر دوشون روی یک هاست ست شده . و در هاست مثلا پوشه های :
css , image , js و ... وجود دارد . حالا دامنه site1.com که می خواهم به همه پوشه دسترسی داشته باشه و بتون همه پوشه هارو باز کند ولی دامنه site2.org فقط بتونه پوشه image رو باز کند که میشه این آدرس site2.org/image رو باز کنه و بقیه پوشه ها رو نتونه باز کنه . تشکر از شما منتظر پاسختون هستم

----------


## رضا قربانی

> سلام
> من مطلب شما رو در مورد .htaccess خوندم. جالب بود ممنون.
> من این فایل و نوشتم و در دایرکتوری ای که مایلم تحت تاثیر عملکرد این فایل  قرار بگیره ذخیره کردم، ولی هیچ نتیجه ای نمی گیرم یا به عبارتی فایل عمل  نمی کنه. rewrite_madule فعال هست و کد من در این فایل اینه:
> RewriteEngine On    # Turn on the rewriting engine
> RewriteRule    ^profile/([a-zA-Z]+)/?$    profile.php?user_name=$1    [NC,L]
> جایی خوندم که باید این فایل رو با استفاده از cuteftp و در مود ASCII در داریکتوری مورد نظر آپلود کنم. درسته؟
> لطفاً اگه مطلبی برای راهنمایی هست، یا من اشتباه می کنم بفرمایید.
> سپاسگزار



AddDefaultCharset utf-8
Options +SymLinksIfOwnerMatch
RewriteEngine On

RewriteRule ^profile/([^/]*)/([^/]*)/?$ profile.php?user_name=$1 [QSA,NC,L]

خروجی آدرس دهی به این صورته :
www.abc.com/profile/test/

موفق باشید .

----------


## alisongmusic

سلام خسته نباشید...

 با وجود کد 



```
 RewriteCond %{HTTP_REFERER} domain\.ir [NC,OR]
RewriteRule .* - [F]
```

و حتی با اضافه کردن ErrorDocument 403 /403.php  به .htaccess  بعد از اجرای کد مسدود سازی سایت ارجاع کننده به سایتم صفحه 403 ای که اختصاصی ساختم هنگام رخ دادن این کد ولی فایل 403 دیگری به نمایش در میاد .... چیکار کنم ؟؟؟؟؟

----------


## رضا قربانی

> سلام خسته نباشید...
> 
>  با وجود کد 
> 
> 
> 
> ```
>  RewriteCond %{HTTP_REFERER} domain\.ir [NC,OR]
> RewriteRule .* - [F]
> ...


 403 به این صورت باید بنویسی : ErrorDocument 404 http://www.test.com/403.html



> راهی هست که دایرکتوری با دستور Options +Indexes برای همه بسته باشه ولی برای آی پی های بخصوص باز باشه ؟


بله در پست های قبلی بن کردن آی پی ها توضیح داده شده . باید کل سایت رو بن کنید و فقط دسترسی رو برای بعضی از آی پی ها باز کنید . (البته آی پی ها همیشه در حال تغییر هستند و کاربر باید آی پی استاتیک داشته باشه).

موفق باشید

----------


## رضا قربانی

سلام خدمت همگی دوستان برنامه نویس
شاید در سایت شما مشکلات امنیتی وجود داشته باشد که با یک اسکن ساده با استفاده از ابزار های کمکی نظیر Acunetix آن ها را نمایش دهد!
در این پست میخوایم با یک httaccess از این کار جلوگیری کنیم ...   :

RewriteEngine On
<IfModule mod_rewrite.c>
RewriteCond %{HTTP_USER_AGENT} ^w3af.sourceforge.net [NC,OR]
RewriteCond %{HTTP_USER_AGENT} dirbuster [NC,OR]
RewriteCond %{HTTP_USER_AGENT} nikto [NC,OR]
RewriteCond %{HTTP_USER_AGENT} SF [OR]
RewriteCond %{HTTP_USER_AGENT} sqlmap [NC,OR]
RewriteCond %{HTTP_USER_AGENT} fimap [NC,OR]
RewriteCond %{HTTP_USER_AGENT} nessus [NC,OR]
RewriteCond %{HTTP_USER_AGENT} whatweb [NC,OR]
RewriteCond %{HTTP_USER_AGENT} Openvas [NC,OR]
RewriteCond %{HTTP_USER_AGENT} jbrofuzz [NC,OR]
RewriteCond %{HTTP_USER_AGENT} libwhisker [NC,OR]
RewriteCond %{HTTP_USER_AGENT} webshag [NC,OR]
RewriteCond %{HTTP:Acunetix-Product} ^WVS
RewriteRule ^.* http://127.0.0.1/ [R=301,L]
</IfModule>


موفق باشید

----------


## alisongmusic

ببخشید بازم نشد  همون 403 دیگری رو باز کرد   حتی لینک کامل ادرس 403

آخه مشکل عجیب اینکه وقتی ای پی رو مسدود میکنم فایل 403 اختصاصی من باز میشه ولی وقتی سایتی رو مسدود میکنمم 403 دیگری باز میشه

ErrorDocument 404 http://www.test.com/403.html


403 Forbidden

Access to this resource on the server is denied!
Powered By LiteSpeed Web Server
LiteSpeed Technologies is not responsible for administration and contents of this web site!

----------


## رضا قربانی

خب این دستور رو در ابتدای دستورات قرار بدید و بقیه دستورات در ادامه

----------


## alisongmusic

حالا چطور میشه  مثلا تو این کد گفت که   اگر کسی از فلان سایتی ارجاع شد   با تو جه به کد  

 RewriteCond %{HTTP_REFERER} domain\.ir [NC,OR] 

براش کوکی سخته شه و اگه همون طرف اگه ادرس سایت رو مستقیم تایپ کرد یا کپی کرد در مرورگر بازهم صفحه براش نیاد ..ممنون دوست عزیزم

----------


## alisongmusic

کسی نیست از عزیزان کمکم کنه ؟؟؟؟؟

----------


## mo0zhgan

سلام روز همگی بخیر
من می خوام پسوند صفحات سایتم رو به یه پسونده دلخواه تغییر بدم
سایتم خیلی ساده است و ایستاست با: Html, css,java نوشته شده 
راههای زیادی رو امتحان کردم متاسفانه موفق نشدم
ممنون می شم اگه راهنماییم کنید
(امیدوارم سوالم رو در قسمته درست مطرح کرده باشم)

----------


## FirstLine

با سلام
  من جستجو کردم و موارد مربوطه را چک کردم اما به نتیجه نرسیدم، لطفا راهنمایی بفرمایید
از xampp استفاده میکنم

  میخوام همه درخواستها به فایل index.php  در root  ارسال بشه 
  مواردی که بصورت /blog/  بهمراه querystring هاش به فایل /blog.php  ارسال بشه 
  مواردی که بصورت post/id/  بهمراه querystring هاش به فایل /post.php  ارسال بشه 

از کد زیر استفاده کردم خیلی هم باهاش کلنجار رفتم اما به نتیجه نرسیدم و پیغام خطای 500 میده



.htaccess

Options +FollowSymLinks -MultiViews

RewriteEngine On
RewriteBase /

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

RewriteRule ^blog/([^/]*)$  blog.php?obj_url=$1 [L,NC,QSA]

RewriteRule ^post/([^/]*)$  post.php?obj_url=$1 [L,NC,QSA]

RewriteRule ^(\w+)$ index.php?id=$1 




با تشکر

----------


## helboy2005

با سلام و تشکر از مطلب آموزنده تون
بنده یه سوال داشتم اگر بخواهم از طریق فایل htaccess تمامی صفحاتی که پیغام 404 می دهند را با یک تغییر آدرس به صفحه جدیدی منتقل کنم، چه کاری باید انجام دهم.
به طور مثال آدرس:
_www.example.com/news/item32_ 
را که با باز شدن در سایت پیغام خطای 404 می دهد را به صفحه
www.example.com/old/news/item32
تبدیل کنم.

*فقط نکته مهم اینه که صفحاتی که پیغام 404 می دهند این اتفاق بیوفتد.*

----------


## k_yk1987

سلام و وقت بخیر
آیا امکانش هست از طریق این فایل دانلود را محدود کرد حالا یا با حجم یا با تعداد کانکشن ها و یا بازه های زمانی مختلف ؟

----------


## رضا قربانی

دو دوست عزیز و دو پست آخر ،
در همین  تاپیک توضیح داده شده . لطفا به پست های قبل تر مراجعه نمایید قطعا به جوابتون میرسید

----------


## kalemati12

سلام

من صفحه 404.html ساختم و کد ErrorDocument 404 /404.html رو هم قرار دادم.
اما همه صفحات رو منتقل نمی کنه به 404.html 

مثلا وقتی مینویسم: 
http://site.ir/sdfsdfsdfsdfs.png
یا
http://site.ir/sdfs.html
یا کلا به صورتی که صفحه پسوند داشته باشه، صفحه به 404 منتقل میشه.
اما اگه به صورت:
http://site.ir/sdfsdfsdfsdfs
یا
http://site.ir/sdfs
باشه به صفحه 404 منتقل نمیشه و وارد سایت میشه و میگه صفحه وجود ندارد.

برطرف شدن این مشکل خیلی حیاتیه چون 30 هزار صفحه not found دارم توی گوگل وب مستر.
 لطفا راهنمایی کنید.

----------


## behnamy01

دوستان یک کد httacess میخوام که باهاش فقط چند تا ip رو allow کنم و بقیه رو ban کنم ولی میخوام که اگر Ip جز ip های مجاز نبود، به جای اینکه اررور مجاز نبودن دسترسی رو بده،  الکی اررور 404 بده! داریم همچین چیزی؟

----------


## SirMoein

سلام خدمت شما
مدت زیادیه دنبال یک کد میگردم که مطمئنم وجود خارجی داره در کدهای htacces
در واقع یک سری افراد تازه کار شروع به ریپ زدن قالب ها با نرم افزارهایی عین Httracker یا Webcopy میکنن ولی یک سری افراد حرفه ای تر اومدن با دستوراتی که درون فایل htacces [ودشون قرار دادند دسترسی به سورس index خودشون رو بستن و بلافاصله بعد از شروع برنامه ارور میده
از وجود این کد مطمئنم ولی هیچ کس اینو نمیدونست
ممنون میشم کمک کنید
باتشکر

----------


## phpdev

سلام دادش گلم انصافا خیلی زحمت کشیدید بابت این آموزش خیلی خوبتون  :تشویق: 

ببین من یه مشکل بد توی این قضیه دارم . آقا به در و دیوار و جاده خاکی و اسفالت و راه آهن و سایتهای خارجی (کمی زبان بلدم) زدم ولی مشکلم حل نشدم  کلی آموزش شما رو هم خوندم ولی نشد اگه مایل باشید حاضرم team wiever بزنم تا مشکلم حل بشه البته اگه شما موافق باشید . :لبخند: 

1 - مدل ادرس دهی توی صفحه باید چطوری باشه ؟
2 - مدل کد htaccess باید چطوری باشه ؟

این سایتمه ولی هرکاری کردم نتونستم درستش کنم الان این کد htaccess هست که توی هاست قرار داره ولی کار نمیکنه  :افسرده:  


Options +FollowSymLinks 
RewriteEngine On 
RewriteRule ^products/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)$ products.php?title=$1&carID=$2 [QSA,NC,L]


ببین داداش بعضی پارامترها string هست و برخی دیگر number !!
میخوام این آدرس :
http://charcharkhkala.com/products.php?title=آزرا&carID=0002 (البته تو این ادیتور درست نمایش داده نمیشه لینکشو گذاشتم تا خودتون مستقیم ببینید)

البته بعضی آدرساشم اینجوریه

بهر حال میخوام اینجوری بشه 
www.charcharkhkala.com/pro/carName/0003 البته بجای carName نام فارشی میخوام بذارم اینجا ادیتور متن درست نشون نمیده یا مثلا میتونم جاشون رو عوض کنم مثلا

www.charcharkhkala.com/pro/0003/آزرا

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

----------


## phpdev

آقا یکی کمک  کنه لطفا . :گریه:

----------


## phpdev

سلام عید همگی مبارک 

بالاخره درست شد. با تشکر از همه دوستان چه اونخایی که وقت گذاشتند و راه حل پیشنهاد دادند و چه اونهایی که شاید به خاطر مشغله وقت نکردند پاسخ بدهند.

ولی بالاخره متوجه شدم مشکل از کجاست.

اول از همه نوع آدرس دهی توی صفحه باید اینجوری باشه


<a href="products/proName/0003" title="title">proName</a>

بعدش توی htaccess اینو بزنید


Options +FollowSymLinks
RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^products/(.*)/(.*)$ ./products.php?title=$1&carID=$2

و حاشو ببرید البته یه نکته داره بعضی وقتها ممکنه فایلهای استایل و اسکریپتهاتون لود نشن که باید توی صفحه مورد نظر توی head اون بالای بالا اینو بزنید . آدرس دهی :



<base href="http://yourdomain.com/" />



دوستان اگه مشکلی بود بگن در حد اطلاعاتم راهنمایی میکنم.

موفق باشید.

----------


## phpdev

یه سوال اینکه آخر دستورات [NC] یا مثلا [L] یا جلوی بعضی دستورات !-f میزنید یا [QS] یعنی چی اگه میشه با مثال بیان نمایید.

----------


## ata3929

چطوری میتونم با تغییر در کد htaccess بشه
 صفحات بدون index خطا بده
با کد Options -Indexes استفاده میکنم ولی خطای 403 میده
راهی هست که بشه صفحات بدون کد و خطای 404 نشون بده ؟
(لطفا کد کامل و بزارین )

----------


## amir115

سلام بچه ها خسته نباشید یه سوال اگه بخایم به عنوان مثال اپلود پسوندی رو در یک پوشه جلوگیری کنیم باید چیکار کنیم مثلا فرض کنید پوشه فایل های اپ ما پوشه uploads هست خوب حالا هر کاربری که ثبت نام میکنه با نام کاربری خودش در داخل پوشه اپلود یه پوشه دیگه ساخته میشه تا فایل های خودشو تو پوشه خودش با یوزر خودش اپلود کنه حالا سوال اینجاست که چطور با htaccess کاری کنیم که پوشه یوزر ها در داخل پوشه uploads از اپلود کردن غیر مجاز جلوگیری کنیم من منظورم کلی هست مثلا میخام اینو بگم که چطور یه فایل htaccess تو پوشه uploads ایجاد کنم تا هواسش به داخل پوشه های یوزر ها باشه تا یوزی فایل مخرب یا پسوند غیر مجاز اپلود نکنه این سوال اول سوال دوم اینکه چطور با htaccess پسوند های مجاز رو معرفی کنم تا هر کاربر تو پوشه کاربری خودش فایل های مجاز رو اپلود کنه سوالم تقریبا یکی هست فقط میخام کد این کارو واسه htaccess بزارین با سپاس

----------


## hamedwollf

سلام دوستان 
 کد user agent می خوام که گوگل بات allow کنه و باقیه بات ها رو deny میشه بدین

----------


## رضا قربانی

با عرض شرمندگی بعد از دو سال برگشتیم به این تاپیک

بدون مقدمه یه چند تا کد و توضیح براتون میذارم :
با این یه خط دستور تمامی پسوندهای مثلا php  رو به html تبدیل می کنید (برای سئو) . معمولا این دستور رو در انتهای فایلتون قرار بدید تا با دیگر پسوندهای html  که تولید کردید قاطی و به ارور برخورد نکنید .

RewriteRule ^(.*).html$ $1.php [L] 

یه داستان جدید در مورد گوگل اینه که باید دایرکتوری های منظم برای سایتتون ایجاد کنید برای مثال من با این کد میگم نام صفحه about.php  منو تبدیل کن به یک فولدر به اسم about/

RewriteRule ^about/$ about.php [L]
جالب اینجاست که شما زمانی که در آدرس بار چنین وارد می کنید about/index.html با ارور مواجه میشید و در اینجا گوگل متوجه میشه که شما به طور ناشیانه ای دارید آدرس ها رو بهتر می کنید و امتیاز کمتری می گیرید . شما برای رفع این مشکل باید : برای هر دفعه تغییر آدرس برای هر یک فایل دو ریرایت انجام بدید :

RewriteRule ^about/$ about.php [L]
RewriteRule ^about/index.html$ about.php [L]
با این دو خط کد می تونید از این مشکل در امان باشید .


در سئو وقتی آدرس دهی انجام میدید که به فولدر ختم میشه باید یه جوری برنامه نویسی کنید تا آدرس دهی هاتون منظم و پله پله ایجاد بشه برای مثال :
*با ریرایت کردن یک فایل php میاید این آدرس رو درست می کنید : www.test.com/product/*
برای گروه بندی محصولات *باید* به این صورت آدرس دهی کنید : www.test.com/product/group/
برای نمایش محصول *باید* به صورت عمل کنید : www.test.com/product/group/name.html

اگر دقت کنید آدرس دهی ها پله پله ای شده . بارها شده جاهای مختلف دیدم که فولدر های الکی درست کردن و وقتی یه قسمتش رو پاک میکردم با خطا مواجه میشدم . این اشتباهه . پس از این به بعد می تونید آدرس های منظم تولید کنید تا در گوگل هم منظم دیده بشید ، دقیقا به همین صورت که آدرس دهی می کنید در گوگل پله پله ای نمایش داده میشید (موقع نمایش سایتتون در گوگل ، زیر عنوان سایتتون این شاخه بندی ها نمایش داده میشه)
مثلا رکوردی که گوگل میاره :
محصول سایت تست
product   group
(یعنی فولدر های قبل محصول رو براتون لینک میکنه - اگر قوانین رو رعایت کنید)
امیدوارم واضح توضیح داده باشم .
موفق و پیروز باشید .

----------


## Darkpriest

سلام
خیلی ممنون از آقای قربانی بابت راهنمایی های مفیدتون.
بنده یه مشکلی دارم، یه سرور دانلود دارم که لینک ها به صورت مستقیم لینک داده شده، حالا میخوام هر کسی روی لینک دانلود کلیک کرد، پیام وارد کردن یوزر پسورد براش بیاد و یوزر پسوردشو که توی دیتابیس هست بزنه و اگه صحیح بود بتونه دانلود کنه
یه نوع هست که یوزر و پسورد در فایل htpasswd ذخیره میکنی که اون هیچ بدرد بنده نمیخوره، می خوام یوزر ها رو از دیتابیس بخونه، کلی تحقیق کردم فهمیدم یه ماژول هست برای اپاچه به اسم Mod_auth_mysql اما هرچی باهاش ور رفتم کار نکرد فقط کد رو که توی htaccess میزارم ارور 500 میده صفحه
ممنون میشم راهنمایی کنید و اگه راه راحت تری هست به بنده بگید.  :لبخند:

----------


## reza898

سلام خسته نباشید 
دوستان من یه راهنمایی می خوام ، چه کدی باید توی اج تی اکسز نوشت که مثلا هر لینکی از سایتمون که در یک سایت ارجاع داده شده مسدود بشه و کلا سایت رو باز نکنه ؟
مثلا لینک های مختلفی از سایت ما توی سایت domine.com هست حالا ما چطور میتونیم این سایت domine.com رو ببریم توی لیست سیاه که ازش به سایتمون ارجاع داده نشه مثلا با کلیک بر روی لینک ها اصلا سایت ما بالا نیاد یا مثلا به یه مسیر که وجود نداره هدایت بشه مثل www.test.com/jfhfjkhkhj.php   (آدرس سایت فرضی ما test.com هست)

----------


## رضا قربانی

بارها شده و برای منم پیش اومده که وقتی از مد ریرایت استفاده می کنیم باید آدرس دهی ها کامل باشه حتی در فایل های خارجی CSS  مثل فونت یا تصویر یا یا حتی جی کوئری یا JS و ... چون در غیر این صورت هیچ کدوم نمایش نمیده . (خیلی ها روی فونت مشکل داشتن)

با کدی جدید تمام مشکلات شمارو حل کردم . 
برین حال کنید .



# Control BY mr.Ghorbani
<ifModule mod_deflate.c>
  <filesMatch "\.(svg|ttf|otf|eot|woff|woff2|css|js|php|html  )$">
    Header set Access-Control-Allow-Origin "*"
  </filesMatch>
</ifModule>
# END Control mr.Ghorbani

موفق باشید

----------


## رضا قربانی

> سلام
> خیلی ممنون از آقای قربانی بابت راهنمایی های مفیدتون.
> بنده یه مشکلی دارم، یه سرور دانلود دارم که لینک ها به صورت مستقیم لینک  داده شده، حالا میخوام هر کسی روی لینک دانلود کلیک کرد، پیام وارد کردن  یوزر پسورد براش بیاد و یوزر پسوردشو که توی دیتابیس هست بزنه و اگه صحیح  بود بتونه دانلود کنه
> یه نوع هست که یوزر و پسورد در فایل htpasswd ذخیره میکنی که اون هیچ بدرد  بنده نمیخوره، می خوام یوزر ها رو از دیتابیس بخونه، کلی تحقیق کردم فهمیدم  یه ماژول هست برای اپاچه به اسم Mod_auth_mysql اما هرچی باهاش ور رفتم  کار نکرد فقط کد رو که توی htaccess میزارم ارور 500 میده صفحه
> ممنون میشم راهنمایی کنید و اگه راه راحت تری هست به بنده بگید.


مشکل ارور 500 از 3 خط کد اول قایل اچ تی اکسس هست (با سرورتون تنظیم نمیشه)
شاید با این مشلت حل شه :

AddDefaultCharset utf-8
Options +SymLinksIfOwnerMatch
RewriteEngine On




> سلام خسته نباشید 
> دوستان من یه راهنمایی می خوام ، چه کدی باید توی اج تی اکسز نوشت که مثلا  هر لینکی از سایتمون که در یک سایت ارجاع داده شده مسدود بشه و کلا سایت رو  باز نکنه ؟
> مثلا لینک های مختلفی از سایت ما توی سایت domine.com هست حالا ما چطور  میتونیم این سایت domine.com رو ببریم توی لیست سیاه که ازش به سایتمون  ارجاع داده نشه مثلا با کلیک بر روی لینک ها اصلا سایت ما بالا نیاد یا  مثلا به یه مسیر که وجود نداره هدایت بشه مثل www.test.com/jfhfjkhkhj.php   (آدرس سایت فرضی ما test.com هست)


 مشکلتون با توابع $SERVER حل میشه در موردش تحقیق کن و کاراییشو یاد بگیر قطعا به هدفت میرسی . من چیزی که توی میخواییو با ایت توابع به هدف رسیدم
موفق باشید

----------


## zohremehran

با سلام خدمت دوستان 
من برای دو زبانه کردن سایتم متغیر lang$=fa , و یا en قرار میدم که با htaccess به این صورت میشه
<*a* *href=**"http://localhost/htaccess/index.php/fa"*>fa</*a*>
<*a* *href=**"http://localhost/htaccess/index.php/en"*>en</*a*>

و این کد ها رو هم در بخش htaccess قرار دادم


*RewriteRule**^([^/]*)/([^/]*)/?$ index.php?lang=fa [QSA,NC,L]
**RewriteRule* *^([^/]*)/([^/]*)/?$ index.php?lang=en [QSA,NC,L]

الان مشکل من اینجاس که وقتی به صفحه ایندکس میام میخوام اگه کاربر روی en کلیک کرده سایت رو به صورت انگلیسی و 
وقتی روی fa کلیک کرده به صورت فارسی نمایش بده که در اینجا فقط مقدار fa رو میتونم داخل متغیر lang$ قرار بدهم
ممنون میشم راهنماییم کنید*

----------


## zohremehran

دوستان کسی نمیتونه به من کمک کنه؟

----------


## رضا قربانی

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

----------

