2012-04-05 28 views
15

Quiero poner algo en mi archivo .htaccess que ocultará la extensión de archivo .php para mis archivos php, por lo que ir a www.example.com/dir/somepage les mostrará www.example.com/dir/somepage.php.¿Cómo puedo usar .htaccess para ocultar extensiones de URL .php?

¿Hay alguna solución de trabajo para esto? Mi sitio usa HTTPS, si eso importa en absoluto.

Esta es mi .htaccess en la actualidad

RewriteEngine On 

RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L] 

ErrorDocument 404 /error/404.php 

RewriteCond %{REQUEST_FILENAME}.php -f 
RewriteCond %{REQUEST_URI} !/$ 
RewriteRule (.*) $1\.php [L] 
+0

Duplicado: http://stackoverflow.com/a/1760412/209139 – TRiG

Respuesta

38

Usar este código en tu .htaccess bajo DOCUMENT_ROOT:

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

# 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 [NC] 
RewriteRule^%{REQUEST_URI}.php [L] 
+1

¿cómo se pueden excluir las páginas? Esto parece estar interfiriendo con mi script de inicio de sesión por lo que me gustaría excluir esa página de estas reescrituras. – ChristopherStrydom

+0

En general, puede agregar la condición de tipo 'RewriteCond% {REQUEST_URI}! ^/(Page1 | page2)'. – anubhava

+0

Gracias lo intentaré. Lo que creo que está sucediendo es cuando la página se vuelve a cargar sin la extensión que está perdiendo las variables. hay alguna manera de arreglar esto? Es como si iniciara sesión dos veces ... Creo ... una vez con el correo electrónico y el pase y luego otra vez sin él. así que en todo lo que puedo iniciar sesión – ChristopherStrydom

0

Prueba esto:

# Unless directory, remove trailing slash 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^/]+)/$ http://example.com/folder/$1 [R=301,L] 

# Redirect external .php requests to extensionless url 
RewriteCond %{THE_REQUEST} ^(.+)\.php([#?][^\ ]*)?\ HTTP/ 
RewriteRule ^(.+)\.php$ http://example.com/folder/$1 [R=301,L] 

# Resolve .php file for extensionless php urls 
RewriteRule ^([^/.]+)$ $1.php [L]Try: 

Referencia:

How to hide .php extension in .htaccess

+0

Esto no funciona para mí, desafortunadamente. – Markum

+0

Pruebe el código anterior y luego. –

+0

Todavía no funciona. – Markum

2
<IfModule mod_rewrite.c> 
RewriteEngine on 

RewriteCond %{REQUEST_FILENAME} !-f  # if the requested URL is not a file that exists 
RewriteCond %{REQUEST_FILENAME} !-d  # and it isn't a directory that exists either 
RewriteCond %{REQUEST_FILENAME}\.php -f # but when you put ".php" on the end it is a file that exists 
RewriteRule ^(.+)$ $1\.php [QSA]   # then serve that file (maintaining the query string) 

</IfModule> 

Curiosamente, este código ga me ve HTTP 500 errors cuando se prueba en XAMPP en Windows. Eliminar los comentarios lo solucionó. También lo hizo mover los comentarios para que estuvieran en sus propias líneas, en lugar de seguir las mismas líneas que las instrucciones.

+1

Intenté esto y me da un error de 500. – Markum

+1

Impar Esto funciona para mi. – TRiG

+1

@Markum. Desde entonces, descubrí que a algunas implementaciones no les gustan los comentarios en las mismas líneas que el código. Intenta eliminar los comentarios. – TRiG

4

Quitar la extensión php

Usted puede utilizar el código en /.htaccess:

RewriteEngine on 


RewriteCond %{REQUEST_FILENAME}.php -f 
RewriteRule^%{REQUEST_FILENAME}.php [NC,L] 

Con el código arriba, podrá acceder a /file.php como/archivo

extensión html Quitar

RewriteEngine on 


RewriteCond %{REQUEST_FILENAME}.html -f 
RewriteRule^%{REQUEST_FILENAME}.html [NC,L] 

Nota: 'RewriteEngine en' directiva debe utilizarse una vez en la parte superior por htaccess, así que si usted quiere combinar estas 2 reglas basta con retirar la línea de la segunda regla. También puede eliminar cualquier otra extensión que elija, simplemente reemplace el .php con ellos en el código.

Happy htaccessing!

Cuestiones relacionadas