mod_rewrite เปิดใช้งานอยู่ แต่ไม่ทำงาน


17

ฉันกำลังพยายามติดตั้งไลบรารีการกำหนดเส้นทาง PHP พวกเขาให้ตัวอย่างนี้สำหรับไฟล์. htaccess:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]

ฉันไม่สามารถใช้งานได้ดังนั้นฉันจึงลองเปิดใช้งาน mod_rewrite แต่มันบอกว่า "Module rewrite เปิดใช้งานแล้ว"

ทำไมมันไม่ทำงานอย่างถูกต้อง? ขอบคุณ! ฉันใช้ Ubuntu Precise 12.04 และ apache2.2.22 (ตรวจสอบการอัปเดตใด ๆ )

แก้ไข: รายละเอียดเพิ่มเติมสองสามมันเป็น PuPHPet คนจรจัดสร้างควรจะเปิดใช้งานการเขียนใหม่

คำตอบ:


33

คุณต้องอนุญาตให้เขียนทับ

<Directory "/path/to/document/root/">
  AllowOverride All
  Allow from All
</Directory>

5
นี่เป็นการอนุญาตที่ไม่จำเป็น เพียง แต่AllowOverrideเป็นสิ่งที่จำเป็นสำหรับการตั้งค่าในคำถาม Allow from Allไม่มีส่วนเกี่ยวข้องกับคำถามและอาจไม่เหมาะสมกับสภาพแวดล้อมของ @ randomdev
ทำเครื่องหมาย

1
<Directory "/path/to/document/root/">ฉันลืมเปลี่ยน/path/to/document/root/เป็นรูทโครงการของฉันขอบคุณ!
Abhishek

16

ก่อนอื่นให้ตั้งค่า httpdเป็นนี้ (เส้นทางอาจแตกต่างกันใน Ubuntu ของฉันมันวางไว้ที่ / etc / apache2 / sites-available / default):

DocumentRoot /var/www

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

หลังจากนั้นคุณควรเปิดใช้งาน mod_rewriteด้วยคำสั่งนี้:

sudo a2enmod rewrite

อันสุดท้ายรีสตาร์ทเซอร์วิสapache ของคุณ :

sudo service apache2 restart

เพื่อให้แน่ใจว่าคุณสามารถตรวจสอบได้อีกครั้งจากphpinfoในการกำหนดค่า> apache2handler> โมดูลที่โหลดจะต้องมีการเขียนmod_rewriteและมันหมายความว่า mod_rewrite เปิดใช้งาน


สิ่งนี้ควรอยู่ในองค์ประกอบโฮสต์เสมือนหรือไม่?
jjxtra

คุณสามารถดูตัวอย่างในApache Virtual Host Example
metamorph

1

ฉันมีปัญหาที่คล้ายกัน แต่คำตอบอื่น ๆ ไม่ได้ช่วยฉัน บรรทัดนี้ที่จุดเริ่มต้นของการ.htaccessแก้ไขปัญหาของฉัน:

Options +FollowSymLinks -MultiViews
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.