2012-05-05 15 views
7

voglio www.example.com/about.php essere solo www.example.com/aboutRimozione .php estensione del file con il file .htaccess

ho creato un file .htaccess e lo mise nella root del il mio server Sto usando l'hosting condiviso linux. Versione PHP 5.2

Sembra che questo codice funzioni correttamente, ma per qualche motivo no. Ottengo un errore 404 quando provo a navigare verso una pagina senza l'estensione .php.

Ecco il mio margine di profitto troppo:

<nav> 
     <div class="container"> 
      <ul> 
       <li><a href="index.php" <?php if (strpos($_SERVER['PHP_SELF'], 'index.php')) echo 'class="current-nav"';?>>home</a></li> 
       <li><a href="about.php">about</a></li> 
       <li><a href="services">our services</a></li> 
       <li><a href="portfolio" <?php if (strpos($_SERVER['PHP_SELF'], 'portfolio.php')) echo 'class="current-nav"';?>>portfolio</a></li> 
       <li><a href="testimonials" <?php if (strpos($_SERVER['PHP_SELF'], 'testimonials.php')) echo 'class="current-nav"';?>>testimonials</a></li> 
       <!--<li><a href="#">client area</a></li>--> 
       <li><a href="contact" <?php if (strpos($_SERVER['PHP_SELF'], 'contact.php')) echo 'class="current-nav"';?>>Contact</a></li> 
       <li><a href="order" <?php if (strpos($_SERVER['PHP_SELF'], 'order.php')) echo 'class="current-nav"';?>><strong>Free Quote</strong></a></li> 
      </ul> 
     </div> 
    </nav><!--/navigation--> 

potete vedere ho provato ad utilizzare l'estensione PHP nel link e anche provato a meno. I collegamenti con l'estensione php vanno alla pagina, ma non rimuovono l'estensione.

Ho eseguito un test per verificare se module_rewrite è stato abilitato inserendo alcuni dati inutili e restituendo un errore 500.

+0

se il vostro hosting è condivisa, di provare questo articolo per avere fatto. http://www.kvcodes.com/2016/02/godaddy-remove-php-extension/ – Kvvaradha

+0

Ho generalizzato questa domanda, poiché non sembra essere specifica per Godaddy o PHP. – Braiam

risposta

0

La regola di riscrittura non è corretta, è la direzione sbagliata. Prova questo invece:

RewriteRule ^(.*).php$ /$1 [L,R=301] 
+0

grazie per l'input ma senza fortuna lì. Ancora ottenendo l'errore 404. –

7

Quindi dopo un lungo periodo con google ho finalmente capito questo fuori. Funziona con l'hosting condiviso di Godaddy. Rimuove le estensioni dei file php in modo http://yoursite.com/about.php diventa http://yoursite.com/about

Options -MultiViews 
RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f #If requested is not a filename... 
RewriteCond %{REQUEST_FILENAME} !-d #And not a directory 
RewriteRule ^(.*)$ $1.php [L]   # perform this redirect 

(rimuovere i commenti prima di caricarlo sul server)

+2

Questo è l'UNICO che ha funzionato per me! Grazie! – FoamyMedia

+0

Ma questa non è la soluzione corretta in quanto riscrive qualsiasi file '/ not-found' in'/not-found.php' anche se il file php non esiste nel sistema. – anubhava

35

Usa questo codice per nascondere/rimozione .php estensione:

Options +FollowSymLinks -MultiViews 
# Turn mod_rewrite on 
RewriteEngine On 
RewriteBase/

## hide .php extension 
# To externally redirect /dir/foo.php to /dir/foo 
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC] 
RewriteRule^%1 [R,L,NC] 

## To internally redirect /dir/foo to /dir/foo.php 
RewriteCond %{REQUEST_FILENAME}.php -f 
RewriteRule^%{REQUEST_URI}.php [L] 
+6

Questo è l'unico frammento che ha funzionato per me. Grazie. – Chris

+2

Questa opzione è l'unica che ha funzionato anche per me con Godaddy. Grazie a @anubhava – Ryan

+1

Altre soluzioni hanno permesso alla pagina di essere visualizzata con o senza l'estensione. Per GoDaddy, questa è l'unica soluzione che rimuove l'estensione .php indipendentemente dal collegamento. Grazie. –

4

ho avuto questo problema inoltre, ma ho trovato che questo sembrava risolvere il problema .htaccess di GoDaddy.

# Fix Rewrite 
Options -Multiviews 

# Mod Rewrite 
Options +FollowSymLinks 
RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.*)$ $1.php 
+0

Fantastic @John SMith, ha funzionato anche per l'hosting di Site5. – AdamJones

+0

ma io sono un utente godaddy, il mio è hosting illimitato, e non funziona qui. – Kvvaradha

1

incollato sopra di tutto nel mio file .htaccess ha lavorato per me ...

## 301 Redirects 
RewriteCond %{QUERY_STRING} ^$ 
RewriteRule ^(.*)\.asp$ $1? [R=301,NE,NC,L] 
Problemi correlati