2012-03-09 7 views
9
bozmadan .htaccess ile uzantılarını .php Kaldır

Ben so.com/ örneğin so.com/question.php için dönüştürme, dosyalardan .php uzantısını kaldırır benim .htaccess dosyasında aşağıdaki yeniden yazmak zorunda Soru. DirectoryIndex

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^\.]+)$ $1.php [NC,L] 

Ancak bu da sadece dizini yazarak klasörde dizin dosyasına yönlendirir hangi varsayılan DirectoryIndex davranışı, örneğin kırar so.com/answer görüntüler so.com/answer/index.php

Basitçe her iki sonuç elde etmez DirectoryIndex index.php ile yukarıdaki kodu birleştirerek.

Birisi bu iki işlevi birleştirmeme yardımcı olabilir veya aynı sonucu elde edebilecek index.php dosyalarını hariç tutmak için kodu yeniden yazabilir mi?

cevap

24

Ben dokunulmamış, sadece öncesinde yeniden yazmak yapmaya dosya var olduğunu doğrulamak gerekir Eğer 404 ve DirectoryIndex davranışları bırakacağım bu şekilde düşünüyorum:

(test edilmedi)
RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME}.php -f 
RewriteRule ^(.*)$ $1.php [NC,L] 

+0

Eklentileri mükemmel bir şekilde ekleyin, teşekkürler. – ajcw

+0

@ Timothée Groleau güzel kod, ana sayfa için 'index.php' kaldırmak için herhangi bir seçenek var mı? – Muhammed

+0

teşekkürler dostum, bu bir çekicilik gibi çalışıyor :) – jycr753

2
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule !.*\.php$ %{REQUEST_FILENAME}.php [L, QSA] 

dosyaları ve klasörleri doğrulayın ve ayrıca, RewriteBase/

+1

Bu bir Dahili Sunucu Hatası verir :( – ajcw

+0

garip ... ayrıca motoru da ekliyorsunuz? :) – Crsr

+0

Evet, Ben RewriteEngine On' dahil :) – ajcw