كاربرد نهم - 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.majidonline.com/siavashmusic
حالا بلاگتون آدرسش عوض شده به اين http://www.majidonline.com/Majid
البته دقت داشته باشيد اين هيچ ربطي به redirct نداره
**این مورد رو دوستانی که به SEO وارد هستند میتونند متوجه بشن که ریدایرکت با ریرایت خیلی فرق داره از نظر نتیجه ای که در اینده برای ما در برخواهد داشت
کد:
RewriteEngine on
RewriteRule ^ehsan(/.*)?$ /knowhow$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://clicksor.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://clicksor.ir/download.php?section=appz&filename=Siavash
داشته باشیم این لینک از ادرس زیر هم در دسترس خواهد بود :
کد:
http://clicksor.ir/myfiles/appz/Siavash.zip
مثال :
کد:
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^blog/([0-9]+)-([a-z]+) http://clicksor.ir/weblog/index.php?archive=$1-$2 [nc]
حالا اگه ادرس ارشیو وبلاگ ما بصورت :
کد:
http://clicksor.ir/weblog/index.php?archive=2007-sep
باشه تبدیل میشه به :
کد:
http://Persiandev.net/blog/2007-sep
با کمی Regular Expression میتونید ادرس هاتون رو خیلی حرفه ای تر کنید و زیباتر
علاقه مندی ها (بوک مارک ها)