2010-11-12 5 views
17

Ho modificato con successo il mio file .htaccess per rimuovere le barre finali nella maggior parte delle pagine, ma mi chiedo come escludere la mia home page/directory? Per esempio:Rimuovere la barra finale utilizzando .htaccess tranne casa/pagina di destinazione

domain.com/test/ reindirizza con successo per domain.com/test

Tuttavia, quando ho colpito il mio dominio si aggiungerà il documento radice

domain.com/ reindirizza a dominio. com/index.php

Esiste una condizione che è possibile aggiungere per ignorare la barra finale dell'URL di root in modo che non tenti di rimuovere la barra finale e di aggiungere il mio script predefinito? Ecco cosa ho finora:

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} ^(.+)/$ 
RewriteRule ^(.+)/$ /$1 [R=301,L] 

risposta

29

OK. Dopo un sacco di prove ed errori ho risposto alla mia domanda.

La terza riga indica che nell'URI deve essere presente qualcosa per eseguire il reindirizzamento, in modo da non reindirizzare se l'url contiene solo la barra iniziale.

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_URI} (.*)$ 
RewriteRule ^(.+)/$ http://www.domain.com/$1 [R=301,L] 
+4

Invece di 'http://www.domain.com/$1 'puoi usare' http: //www.% {HTTP_HOST}/$ 1' migliore. Quindi l'utente non ha bisogno di modificare quella linea e rendere possibili errori. –

+2

@ La soluzione di YH non funziona per i siti Web nelle sottodirectory (né per localhost, che non può avere 'www.' prima di se stesso). Quindi ad es. 'localhost/web1/page1 /' viene reindirizzato in modo errato a 'www.localhost/page1'. –

+1

non funziona in caso di directory –

9

Come su

RewriteEngine On 
RewriteRule ^(.*)/$ http://%{HTTP_HOST}/$1 
17

richiesta Redirect per tutti gli URL che terminano in un / tranne che per la radice:

RedirectMatch 301 ^(.+)/$ $1 
+0

gestisce anche http/https allo stesso modo –

+0

molto semplice ma funziona perfettamente. – vee

+0

Ho aggiunto questo codice nel file htaccess. Funziona bene. Ma i miei file css non vengono caricati. – VijayS91

Problemi correlati