معمولا سوال اینجاست ! چطور می توان نصب یا فعال بودن مد rewrite را چک کرد. در ابتدا چک میکنید
که آیا این این مد نصب شده در مرحله دوم برسی میکنی که ایا این مد در اپاچی لود شده است و در
مرحله سوم تنظیم بودن فایل کانفیگ اپاچی را برای استفاده از فایل htaccess از دایرکتوری برسی میکنید.
برای شروع دستور زیر را وارد کنید :
httpd -V
خروجی این دستور بصورت زیر است :
Server version: Apache/2.2.15 (Unix) Server built: Nov 15 2012 15:52:50 Server's Module Magic Number: 20051115:24 Server loaded: APR 1.3.9, APR-Util 1.3.9 Compiled using: APR 1.3.9, APR-Util 1.3.9 Architecture: 64-bit Server MPM: Prefork threaded: no forked: yes (variable process count) Server compiled with.... -D APACHE_MPM_DIR="server/mpm/prefork" -D APR_HAS_SENDFILE -D APR_HAS_MMAP -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled) -D APR_USE_SYSVSEM_SERIALIZE -D APR_USE_PTHREAD_SERIALIZE -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT -D APR_HAS_OTHER_CHILD -D AP_HAVE_RELIABLE_PIPED_LOGS -D DYNAMIC_MODULE_LIMIT=128 -D HTTPD_ROOT="/etc/httpd" -D SUEXEC_BIN="/usr/sbin/suexec" -D DEFAULT_PIDLOG="run/httpd.pid" -D DEFAULT_SCOREBOARD="logs/apache_runtime_status" -D DEFAULT_LOCKFILE="logs/accept.lock" -D DEFAULT_ERRORLOG="logs/error_log" -D AP_TYPES_CONFIG_FILE="conf/mime.types" -D SERVER_CONFIG_FILE="conf/httpd.conf"
دو خطی که در متن بالا مورد نظر ماست ترکیب ان مربوط به ادرس فایل کانفیگ اپاچی است :
/conf/httpd.conf
و
/etc/httpd
که میشود :
/etc/httpd/conf/httpd.conf
مد های اپاچی نیز در ادرس دایرکتوری زیر قرار دارد :
/etc/httpd/modules
خب ! در قدم اول چک میکنیم مد rewrite نصب شده است یا خیر :
ls /etc/httpd/modules | grep mod_rewrite
خروجی این دستور بصورت زیر است :
[root@server ~]# ls /etc/httpd/modules | grep mod_rewrite mod_rewrite.so
این خروجی به این معناست که مد مورد نظر ما نصب شده است ( معمولا این مد همراه اپاچی نصب میشود ) در غیر این
صورت باید به همراه اپاچی نصب و کامپایل شود.
در این مرحله چک میکنیم که ایا مد rewrite در فایل کانفیگ اپاچی لود شده یا خیر :
grep -i LoadModule /etc/httpd/conf/httpd.conf | grep rewrite
در صورتی که خروجی بصورت زیر بود :
[root@server ~]# grep -i LoadModule /etc/httpd/conf/httpd.conf | grep rewrite LoadModule rewrite_module modules/mod_rewrite.so
این بدین معناست که مد ما در فایل کانفیگ اپاچی لود شده اما در صورتی که در ابتدای خروجی علامت # را مشاهده کردید:
#LoadModule rewrite_module modules/mod_rewrite.so
فایل کانفیگ اپاچی را با استفاده از ادیتور متنی باز کرده و علامت # را از جلوی این بردارید.
(ادرس فایل کانفیگ در ابتدا توضیح داده شده)
حالا از نصب و لود شدن این مد مطمئن شدیم. مرحله بعدی تنظیم دایرکتوری برای استفاده فایل htaccess از
مد rewrite است. برای این منظور در ابتدا وضعیت کانفیگ این مد را در فایل کانفیگ چک میکنیم.
برای این منظور دستور زیر را وارد میکنیم :
grep -i AllowOverride /etc/httpd/conf/httpd.conf
خروجی بصورت زیر است :
[root@static ~]# grep -i AllowOverride /etc/httpd/conf/httpd.conf AllowOverride None AllowOverride None
در این مرحله فایل کانفیگ اپاچی را باز کنید و خطی که AllowOverride را در ان مشاهده میکنید None را پاک کرده
و به جای ان All را اضافه نمایید مانند زیر :
DocumentRoot "/var/www/html" <Directory /> Options SymLinksIfOwnerMatch AllowOverride None </Directory> <Directory "/var/www/html"> Options Indexes SymLinksIfOwnerMatch AllowOverride None Order allow,deny Allow from all </Directory>
را به شکل زیر تغییر دهید :
DocumentRoot "/var/www/html" <Directory /> Options SymLinksIfOwnerMatch AllowOverride All </Directory> <Directory "/var/www/html"> Options Indexes SymLinksIfOwnerMatch AllowOverride All Order allow,deny Allow from all </Directory>
ممکن است تعداد این بلوک ها در فایل کانفیگ اپاچی شما ۱ عدد یا ۴ عدد باشد شما هر بلوکی که
میخواهید در ان دایرکتوری مد rewrite فعال باشد را AllowOverride All کنید.
میتوانید با کپی و پیست کردن بلاک و تعویض ادرس دایرکتوری مورد نظر خود نیز تغیرات مورد نظرتان را اعمال کنید.
خب شما با موفقیت مد rewrite را فعال کردید. حالا با ریست کردن اپاچی از این مد استفاده کنید.
service httpd restart