2012-04-03 11 views
49

Mam następującą linię w moim pliku .htaccess:Producent, ale pozwalają index.php do odwiedzin jeśli wpisany

DirectoryIndex index.html index.php 

każdym razem idę, aby go index.php zabiera mnie do indeksu .html. Czy możliwe jest zezwolenie na oba, ale pozostaw domyślną wartość index.html dla użytkowników odwiedzających witrynę www.domain.com?

+0

Czy istnieją zarówno 'index.html' i' index.php', czy tylko jeden? – nkorth

+1

Oboje istnieją. Czy mówisz, że mój plik .htaccess powinien pozwolić mi odwiedzić oba? –

+1

Nie możesz mieć tylko "index.html" w 'DirectoryIndex'? Wtedy byłby domyślny dla 'example.com'. Drugi plik powinien być dostępny na 'example.com/index.php'. – bfavaretto

Odpowiedz

73

Domyślnie DirectoryIndex jest ustawiony na:

DirectoryIndex index.html index.htm default.htm index.php index.php3 index.phtml index.php5 index.shtml mwindex.phtml 

Apache będzie szukał dla każdego z powyższych plików, w kolejności, a służyć pierwszy stwierdzi, gdy zażądał użytkownik po prostu katalogiem. Jeśli serwer nie znajdzie plików w bieżącym katalogu, które pasują do nazw w dyrektywie DirectoryIndex, wówczas lista katalogów zostanie wyświetlona przeglądarce, pokazując wszystkie pliki w bieżącym katalogu.

Kolejność powinna być DirectoryIndex index.html index.php // domyślna to index.html

referencyjny:Here.

+1

Dzięki kolego, usuniemy plik .htaccess dziś wieczorem i zobaczę, czy to rozwiąże mój problem. Pomyślałem, że to trochę dziwne, ponieważ nigdy wcześniej nie zdarzyło się to na żadnym z moich stron. –

+1

Jestes mile widziany :-) –

1
RewriteEngine on 
RewriteRule ^(.*)\.html$ $1.php%{QUERY_STRING} [L] 

Umieść te dwie linie u góry pliku .htaccess. Pokaże .html w adresie URL stron .php.

RewriteEngine on 
RewriteRule ^(.*)\.php$ $1.html%{QUERY_STRING} [L] 

Użyj tego, aby wyświetlić .php w adresie URL dla stron .html.

+0

To wygląda dobrze, ale nie do końca, co było po tym, jak się boję. –

11

Jeśli używasz WordPress, istnieje teraz hak filtr aby rozwiązać ten problem:

remove_filter('template_redirect', 'redirect_canonical'); 

(Put to w swoim motywu functions.php)

Mówi WordPress nie przekierować index.php powrotem do strona główna, ale usiąść tam, gdzie jest. W ten sposób index.html może zostać przypisana do domyślnej strony w .htaccess i może współpracować z index.php.

+0

To jest świetne, dzięki za aktualizację –

+0

To jest ratownik! – ASR

1

DirectoryIndex index.html index.htm default.htm index.php index.php3 index.phtml index.php5 index.shtml mwindex.phtml

nie ma żadnych środków? może być po prostu trzeba dodać w ten sposób!

<IfModule dir_module> 
    DirectoryIndex index.php index.html index.htm 
</IfModule> 

enter image description here

3

Zgadzam się z @ TheAlpha zaakceptowana odpowiedź, Apache odczytuje pliki docelowe DirectoryIndex od lewej do prawej, jeśli pierwszy plik istnieje, apche zaprasza go, a jeśli to robi to następny plik serwowane jest jako indeks dla katalogu. Więc jeśli masz następujące dyrektywy:

DirectoryIndex file1.html file2.html 

Apache posłuży /file.html jako indeks, trzeba będzie zmienić kolejność plików, jeśli chcesz ustawić/plik2.html jako indeks

DirectoryIndex file2.html file1.html 

można również ustawić za pomocą pliku indeksu RewriteRule

RewriteEngine on 

RewriteRule ^$ /index.html [L] 

RewriteRule powyżej będzie przepisać swoją stronę do /index.html przepisanie dzieje wewnętrznie tak http://example.com/ by pokazać zawartość ofindex. html.

Powiązane problemy