2012-04-03 10 views
49

ho la seguente riga nel mio file .htaccess:Fai index.html di default, ma permettono index.php da visitare se digitato

DirectoryIndex index.html index.php 

Ogni volta che vado a index.php mi prende per indicizzare .html. È possibile consentire entrambi, ma lasciare index.html come impostazione predefinita per gli utenti che visitano www.dominio.com?

+0

Sono presenti sia 'index.html' che' index.php', o solo uno? – nkorth

+1

Entrambi esistono. Stai dicendo che il mio file .htaccess dovrebbe permettermi di visitare entrambi? –

+1

Non hai solo 'index.html' in' DirectoryIndex'? Quindi sarebbe il default per 'esempio.com'. L'altro file dovrebbe essere disponibile su 'example.com/index.php'. – bfavaretto

risposta

73

Per impostazione predefinita, il DirectoryIndex è impostato su:

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

Apache cercherà ognuno dei file di cui sopra, al fine, e servire il primo che trova quando un visitatore richieste solo una directory. Se il server Web non trova alcun file nella directory corrente che corrisponde ai nomi nella direttiva DirectoryIndex, verrà visualizzato un elenco di directory nel browser, che mostra tutti i file nella directory corrente.

L'ordine dovrebbe essere DirectoryIndex index.html index.php // predefinito è index.html

Riferimento:Here.

+1

Grazie amico, rimuoverò il file .htaccess stasera e vedere se questo risolve il mio problema. Ho pensato che fosse un po 'strano perché non è mai successo a nessuno dei miei siti web prima di questo. –

+1

Siete i benvenuti :-) –

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

Metti queste due righe nella parte superiore del tuo file .htaccess. Mostrerà .html nell'URL per le tue pagine .php.

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

Utilizzare questo per mostrare .php in URL per le pagine .html.

+0

Questo sembra elegante ma non proprio quello che cercavo dopo aver paura. –

11

Se stai usando WordPress, v'è ora un gancio filtro per risolvere questo:

remove_filter('template_redirect', 'redirect_canonical'); 

(mettere questo in del vostro tema functions.php)

Questo dice a WordPress per non reindirizzare index.php indietro al pagina radice, ma per sedersi dov'è. In questo modo, è possibile assegnare index.html come pagina predefinita in .htaccess e può funzionare insieme a index.php.

+0

Questo è fantastico, grazie per l'aggiornamento –

+0

Questo è un risparmiatore di vita !! – ASR

1

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

non ha alcun mezzo? potresti essere solo bisogno di aggiungere come questo!

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

enter image description here

3

Sono d'accordo con @ TheAlpha accettato risposta, Apache legge i file di destinazione DirectoryIndex da sinistra a destra, se esiste il primo file, apache serve e se si pretende molto quindi il file successivo è servito come indice per la directory. Quindi, se avete la seguente direttiva:

DirectoryIndex file1.html file2.html 

Apache servirà /file.html come indice, sarà necessario modificare l'ordine dei file se si desidera impostare/file2.html come indice

DirectoryIndex file2.html file1.html 

È anche possibile impostare file di indice utilizzando un RewriteRule

RewriteEngine on 

RewriteRule ^$ /index.html [L] 

RewriteRule sopra riscriverà la tua home page per /index.html la riscrittura avviene internamente in modo http://example.com/ sarebbe mostrare il contenuto ofindex. html.

Problemi correlati