mod_rewrite etkin, ancak çalışmıyor


17

Bir PHP yönlendirme kitaplığı kurmak için çalışıyorum. Bu örneği bir .htaccess dosyası için verir:

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

Bu işe yaramadı, bu yüzden mod_rewrite etkinleştirmeyi denedim, ama "Modül yeniden yazma zaten etkin" diyor.

Neden düzgün çalışmıyor? Teşekkürler! Ubuntu Precise 12.04 ve apache2.2.22 kullanıyorum. (Herhangi bir güncelleme olup olmadığını kontrol edin)

EDIT: Birkaç ayrıntı, bu bir PuPHPet vagrant yapı, yeniden yazma etkinleştirilmelidir.

Yanıtlar:


34

Üzerine yazmaya izin vermeniz gerekiyor.

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

5
Bu gereksiz yere izin vericidir. Sadece AllowOverridesöz konusu yapılandırma için gereklidir. Allow from Allsoruyla hiçbir ilgisi yoktur ve @ randomdev'in ortamı için uygun olmayabilir.
Mark

1
<Directory "/path/to/document/root/">/path/to/document/root/Proje kökümü değiştirmeyi unuttum .
Abhishek

16

Her şeyden önce, httpd yapılandırmanızı buna ayarlayın (yol birbirinden farklı olabilir. Benim ubuntu'mda / etc / apache2 / sites-available / default):

DocumentRoot /var/www

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

Bundan sonra, mod_rewrite'ı şu komutla etkinleştirmelisiniz :

sudo a2enmod rewrite

Sonuncusu, apache hizmetinizi yeniden başlatın :

sudo service apache2 restart

Sağlamak için, tekrar kontrol edebilirsiniz phpinfo içinde Yapılandırması> apache2handler> Modüller Loaded orada yazılmalıdır mod_rewriteve mod_rewrite özelliği etkin demektir.


Bu bir sanal ana bilgisayar öğesinde olmalı mı?
jjxtra


1

Benzer bir sorunum vardı, ama diğer cevaplar bana yardımcı olmadı. Bu satır başında .htaccessbenim sorun çözüldü:

Options +FollowSymLinks -MultiViews
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.