Yeniden yazma girişinin etkinleştirilmesi neden .htaccess çalışmıyor?


9

Yeniden yazma kuralında hata ayıklamak, ancak RewriteLog yönergelerini eklemek 500 hatasına neden oluyor, yeniden yazma günlüğünü etkinleştirmek istiyorum.

Versiyon bilgisi:

Ubuntu 14.04

Server version: Apache/2.4.12 (Ubuntu)
Server built:   Feb  4 2015 14:22:06

içeriği .htaccess

<IfModule mod_rewrite.c>
RewriteEngine On

RewriteLog /var/log/apache2/rewrite.log
RewriteLogLevel 5

RewriteBase /

RewriteRule ^/wordpress/wp-content/(.*)$ /wp-content/$1 [L]

RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

Hata günlüğünde şunu görüyorum:

/var/www/path.to/wordpress/.htaccess: Invalid command 'RewriteLog', perhaps misspelled or defined by a module not included in the server configuration

Yanıtlar:


14

Günlüğe kaydetmenin .htaccessdosyalarda yapılandırılamayacağını unutmanın yanı sıra , bunun da Apache sürüm sorunu olduğu ortaya çıktı. RewriteLog yönergesi daha yeni sürümlerde değiştirildi ve Virtualhost yapılandırmasına aşağıdakilerin eklenmesi yeniden yazma günlüğünü benim için etkinleştirdi:

LogLevel alert rewrite:trace3 (can be increased to trace8)

Kılavuzdan:

Mod_rewrite'ın önceki sürümlerine aşina olanlar şüphesiz RewriteLog ve RewriteLogLevel yönergelerini arayacaktır. Bu işlevin yerini tamamen yukarıda belirtilen yeni modül başına günlük yapılandırması almıştır.

Hata günlüğündeki bu iletileri filtrelemek için aşağıdakileri yapabilirsiniz:

tail -f error_log|fgrep '[rewrite:'

Sorunuz aslen apache-2.2 ile etiketlendi değil mi? ve sorunun kendisinin versiyonunu gözden kaçırmış olabilirim. İyi gördüm.
HBruijn

Bu kimseye yardımcı olursa, benim sorunum bağlantı noktası 80 için VHost oturum açmayı etkinleştiriyordum ama 443 için değil. HTTPS kullanıyordum, bu yüzden günlüğüm işe yaramadı. Bu aptal hatayı bulmak için bir süre aldı :(
BrianVPS

Ben mod_log_debugetkinleştirmek zorunda olduğunu eklemek istiyorum ...
thoni56

4

Kendimi tekrarlamama yardım edemem:

.Htaccess kullanan ve bunu ServerFault üzerinde soran çoğu kişi ilk olarak .htaccess kullanmamalı, çünkü yöneticiler için hiç tasarlanmamış bir son kullanıcı çözümü:

Sen olmalıdır tamamen .htaccess dosyaları kullanmaktan kaçının Eğer httpd ana sunucu geneli dosyasına erişimi varsa. .htaccessDosyaları kullanmak Apache http sunucunuzu yavaşlatır. Bir .htaccess dosyasına ekleyebileceğiniz herhangi bir yönerge, daha iyi performansla aynı etkiye sahip olacağı için Dizin bloğunda daha iyi ayarlanır.
Kaynak: Apache kılavuzu

Görünüşe göre, konfigürasyonlarını yayınlayan çoğu insan , nedenleri anlamadan .htaccess dosyalarını körü körüne kopyalamaya istekli kargo kült programcıları gibi görünüyor .

Sorununuz en iyi örnektir: RewriteLogyönerge yalnızca bir sunucu yapılandırması veya sanal ana bilgisayar bağlamında geçerlidir ...

Bu bir dosyada izin verilmiyor demektir .htaccess!


4
Günlükleri aramak, kopyalamak değil, öğrenmek isteyen birisinin yapacağı şeydir. Apache klasik catch-22 kurmuştur görünüyor: Eğer varsa sadece .htaccess kullanmalısınız edemez sunucu kök erişin. Eğer Ama eğer sadece oturum kapatabilirsiniz olabilir sunucu kök erişin. Tüm bu yeniden yazma işlemlerini .htaccess içinde yapmanıza izin veriyorlarsa, rastgele kopyalama ve yapıştırma / deneme yanılma yöntemine güvenmenize gerek kalmadan yaptıklarını günlüğe kaydetmenize izin vermelidirler.
Mark Berry

5
Wordpress gibi bazı uygulamalar hata ayıklanması gereken .htaccess dosyaları oluşturur. Burada durum böyle. Başka birinin anlaşılmaz düzenli ifadelerini çözmeye çalıştığınızda .htaccess dosyasından oturum açmak mantıklı bir ilk adımdır.
KeithL
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.