2012-03-09 18 views
9

Mam następujący przepisać w moim pliku .htaccess, który usuwa rozszerzenie .php z plików, konwersja na przykład so.com/question.php do so.com/ pytanie.Usuń rozszerzenia .php z .htaccess bez zerwania DirectoryIndex

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

Jednak ten łamie również domyślne zachowanie DirectoryIndex, w którym po prostu wpisując katalog będzie przekierować do pliku indeksu w folderze, na przykład so.com/answer wyświetlacze so.com/answer/index.php

prostu łącząc powyższy kod z DirectoryIndex index.php nie osiągnąć oba wyniki.

Czy ktoś może mi pomóc połączyć te dwie funkcje, lub przepisać kod do wyłączenia plików index.php, który będzie osiągnąć ten sam wynik?

Odpowiedz

24

myślę po prostu trzeba sprawdzić, czy plik istnieje przed robi przepisywanie tamtędy Opuścisz 404 i DirectoryIndex zachowania w stanie nienaruszonym:

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

(nie badane)

+0

Działa doskonale, dziękuję. – ajcw

+0

@ Timothée Groleau ładny kod, czy istnieje opcja usunięcia "index.php" dla strony głównej? – Muhammed

+0

dzięki kolego, to działa jak czar :) – jycr753

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

sprawdź pliki i foldery, a także dodaj RewriteBase/

+1

Ten daje Internal Server Error :( – ajcw

+0

dziwne ... dodać również silnik o? :) – Crsr

+0

Tak, I włączone 'RewriteEngine On' :) – ajcw

Powiązane problemy