How to enable mod_rewrite in Apache

mod_rewrite apache

สวัสดีครับ วันนี้ผมมีปัญหาสุดแสนธรรมดามาให้อ่านกันครับ นั่นก็คือการ enable mod_rewrite ใน Apache นั่นเอง ส่วนใหญ่แล้ว developer ก็คงไม่ต้องสนใจกับเรื่องนี้หรอก เพราะจะมีคนที่ทำ server ทำให้ แต่ในกรณีที่คุณอยากจะทำเองขึ้นมา คุณจะทำอย่างไร ? ตามผมมาเลยครับ

ในที่นี้ผมทำกับ Ubuntu ก็เลยต้องพิมพ์ command ลงไปเอง

sudo a2enmod rewrite

จากนั้นก็ restart apache ซักรอบนึง

sudo service apache2 restart

server ของคุณก็จะใช้งาน mod_rewrite ได้แล้ว สำหรับพวก wordpress ก็สามารถใช้ permalink ได้เลยเช่นกัน แต่กรณีที่คุณจะใช้งาน mod_rewrite ในไฟล์ .htaccess ก็ต้องทำอีกขั้นตอนนึงครับ ให้เข้าไปเปิดไฟล์นี้มาแก้ไข /etc/apache2/sites-available/default หรือพิมพ์คำสั่งนี้ไป

sudo nano /etc/apache2/sites-available/default

จากนั้นก็แก้ไขจาก AllowOverride None เป็น AllowOverride FileInfo ในส่วนนี้ครับ

<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
# changed from None to FileInfo
AllowOverride FileInfo
Order allow,deny
allow from all
</Directory>

สำหรับ Apache 2.4.6 จะหาไฟล์ default ไม่เจอครับ ให้ไปแก้ไฟล์ 000-default.conf แทนครับ

sudo nano /etc/apache2/sites-available/000-default.conf

หลังจากนั้นให้ใส่โค๊ดทีเป็นสีแดงลงไประหว่างกลาง ลองหาดูในไฟล์ 000-default.conf ครับ

ServerName localhost

ServerAdmin webmaster@localhost
DocumentRoot /var/www
        <Directory /var/www >
               AllowOverride All
        </Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

หากไม่อยากจะ enable mod_rewrite สำหรับทุกๆ virtual directory ก็เปลี่ยนจากการเปิดไฟล์ default เป็นการเปิดไฟล์ของ virtual directory อื่นครับ

หวังว่าจะประสบผลสำเร็จนะครับ :)