Mod_rewrite Apache'de nasıl etkinleştirilir?


164

Ubuntu sistemime LAMP yığını yeni kurdum.

Yönlendirme benim için çalışmıyor. Nasıl düzelteceğimi bilmiyorum. Biri bana yardım edebilir mi?


3
IMHO bu soru Ubuntu'ya özgü değildir ve Sunucu Arızasına geçirilmelidir .
Paolo

2
OP, UBUNTU’ya Lamba taktı. Daha ne kadar Ubuntu’ya özgü istersiniz?
wojox

1
@wojov: Bu davayı bilmiyorum, ama bu argüman işe yaramıyor. "Bu uygulamayı nasıl kullanabilirim (Ubuntu'da)?" çoğunlukla konu dışı.

23
Bu bir "Uygulamayı nasıl kullanabilirim" değil, "Ubuntu'da belirli bir özelliği nasıl etkinleştireceğimi" değildir. Ubuntu altındaki Apache, her modülün ve sanal ana bilgisayarın bir dosya olduğu /etc/apache2ve a2*programlar kullanılarak etkinleştirilebilen farklı bir yapılandırma düzeni kullanır .
Lekensteyn

Sorunu daraltmak için neler yaptığınızı açıklamalısınız,
ericn

Yanıtlar:


238

Yeniden yazma modülünü etkinleştirmek için "apache2 enable module rewrite" komutunu çalıştırın:

sudo a2enmod rewrite

Değişiklikleri uygulamak için web sunucusunu yeniden başlatmanız gerekir:

sudo service apache2 restart

İçinde mod_rewrite kullanmayı planlıyorsanız .htaccessdosyaları, ayrıca kullanımını etkinleştirmek gerekir .htaccessdeğiştirerek dosyaları AllowOverride Noneiçin AllowOverride FileInfo. Varsayılan web sitesi için düzenleyin /etc/apache2/sites-available/default:

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

Böyle bir değişiklikten sonra Apache'yi yeniden başlatmanız gerekir.


18
AllowOverride All
Valentin Despa

Teşekkürler! sudo a2enmod rewriteve FileInfobenim için düzeltti!
d -_- b

22
Benim için bu dosya
/etc/apache2/apache2.conf

Evet, iki değişikliğin sorunu çözmesini sağlayın.
Adelin,

Benim için çalışmıyor. Buraya bir soru gönderdim askubuntu.com/questions/809619/failing-to-rewrite-url
Suhail Gupta

49

Unt unt ub regarding regarding ( above .0 regarding regarding 14.04 ile ilgili özel bir cevap eklemeye cüret ediyorum (yukarıdaki büyük cevabın devamı olarak) ve .htaccess:

14.04'te, varsayılan yapılandırma dosyasının adı şu şekilde değiştirildi 000-default.conf:

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

aşağıdakileri dosyanın sonuna ekleyin:

<Directory "/var/www/html">
    AllowOverride All
</Directory>

Nedense Ubuntu 14.04 ve apache2'de kök olarak ayarlanmıştır /www/html. Eğer iyi eski geri web sunucusu kök değiştirmek isterseniz /www, open 000-default.confve değişim

DocumentRoot /var/www/html/

için

DocumentRoot /var/www/

ve sonra ders dışı olmalı

<Directory "/var/www">
    AllowOverride All
</Directory>

1
Bilgi için teşekkürler! Bu / yeni yol, www tüm web sitelerini koyduğumuz klasör olarak kullanabiliriz ve html varsayılan olarak localhost için "web sitesi" dir. Dünyaya açılan limanlarla oynuyorsanız önemli olabilir - bu şekilde localhost cihazınız diğer projelerin klasörlerini göremez.
Vladimir Vukanac 27:15

1
Benim için çalışmıyor. Ben kullanıyorum Ubuntu 14.04.4 LTS
Suhail Gupta
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.