Apache2 RewriteRule ไม่ทำงาน


0

ฉันมีสิ่งนี้ใน /srv/www/htdocs/.htaccess ของฉัน:

RewriteEngine On #turn on rewite engine
RewriteRule ^schedule/?$ index.php?page=schedule [NC,L]
RewriteRule ^music/?$ index.php?page=music [NC,L]
RewriteRule ^thefamily/?$ index.php?page=thefamily [NC,L]
RewriteRule ^contact/?$ index.php?page=contact [NC,L]

ฉันไปที่http://localhost/contactและฉันได้รับข้อผิดพลาด 404 บนเซิร์ฟเวอร์ระยะไกลของฉันรหัสนี้.htaccessทำงานได้ดี ฉันจะให้ RewriteRule ทำงานบน Apache2 ได้อย่างไร ฉัน googled และอ่านว่าคำสั่งนี้จะทำให้มันทำงานได้# a2enmod rewriteแต่มันก็ไม่ได้ [ฉันรีสตาร์ท apache2 ด้วย]

ฉันยังเพิ่มไฟล์ลงRewriteEngine Onใน / etc / apache2 / sites-available / default ของฉัน [Inside the VirtualHost] แต่นั่นก็ไม่ได้แก้ไขเช่นกัน

ฉันใช้งานจาก Ubuntu 11.04 ความช่วยเหลือใด ๆ ชื่นชมขอบคุณ!

คำตอบ:


2

เริ่มต้น apache virtualhost กำหนดค่าบนเดเบียน (และฉันสมมติว่า Ubuntu) ไม่อ่านไฟล์. htaccess หากต้องการเปิดใช้งานให้เปิดไฟล์กำหนดค่าเริ่มต้น (/ etc / apache2 / sites-available / default) ค้นหาสิ่งที่คล้ายกับ:

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

เปลี่ยนบรรทัด "AllowOverride None" เป็น "AllowOverride All" โหลดซ้ำหรือรีสตาร์ท apache (/etc/init.d/apache reload) AllowOverride จำกัด คำสั่งที่สามารถวางในไฟล์. htaccess ได้เมื่อตั้งค่าเป็น None, apache จะไม่แยกวิเคราะห์ไฟล์


1
ฉันได้ลองแล้วในรายการ/var/www/<Directory> ก่อนที่ฉันจะเห็นโพสต์ของคุณ แต่มันไม่ทำงาน อย่างไรก็ตามฉันเปลี่ยนรูท ["ไดเรกทอรี />>"] ของไดเรกทอรี ALlowOverride เป็น "ทั้งหมด" และใช้งานได้! ขอบคุณ
Matt
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.