Ocultar extensiones php/html con .htaccess


A la hora de estructurar nuestra página web uno de los aspectos interesantes a tener en cuenta es buscar que nuestros enlaces a los diferentes contenidos de nuestro website sean fáciles de recordar, fáciles de interpretar y, sobre todo, que sean “amigables” al ojo humano, por decirlo de algún modo. No es lo mismo una dirección del tipo “www.mipaginaweb.com/contacta-con-migo.php” que, por ejemplo, una que sea “www.mipaginaweb.com/contacto“. La brevedad y ser conciso en lo que decimos es algo que agradece cualquier visitante.

Gracias a .htaccess podremos lograr este cometido ocultando nuestras extensiones .php/.html de nuestros archivos dentro del servidor.De este modo, no será necesario introducir la ruta completa y será accesible tanto CON como SIN extensión.

Para lograrlo, simplemente, debemos agregar este pequeño código en nuestro fichero .htaccess para eliminar las extensiones php (si no existe debemos crear uno, de nombre ‘.htaccess’, y situarlo en el directorio raiz de nuestro servidor). En caso de las extensiones .html utilizaremos el mismo código cambiando .php por .html.

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php

Como se deduce de la instrucción “RewriteEngine on”, es necesario tener activado el módulo “mod_rewrite” en nuestro servidor. Por defecto viene ya instalado en la mayoría de distribuciones Apache pero hay casos, sobre todo en hostings baratos y pequeños (tipo 1and1), donde no es posible activarlo.

La alternativa para este tipo de hosting en concreto y posiblemente para otros muchos es reescribir los ficheros de nuestro servidor SUPRIMIENDO manualmente su extensión y gracias a .htaccess que éste los interprete como .php (para .html no es necesario) . En este caso particular (1and1) el código a utilizar por página es el siguiente (siendo “contacto” el nombre de nuestro fichero).

<Files contacto>
ForceType x-mapp-php5
</Files>

Para websites relativamente pequeños esta solución puede ser muy útil pero nefasta si disponemos de muchos archivos en nuestro servidor. Por eso, antes de decidir cual será nuestro plan de hosting para nuestra web, debemos fijarnos en si sus prestaciones se adecuan a nuestros intereses y ésta puede ser una de ellas.

75 Comments

Join the discussion and tell us your opinion.

Alexander Jose Rodriguez Duvenreply
31 julio, 2011 at 11:49 pm

Esta realmente bueno ese codigo ya lo implemente en mi sitio pues todo lo programe yo en php y en algunas partes quiero que no salgan sus extensiones y ademas es mas agradable a la vista y al SEO

merino.renatoreply
16 agosto, 2011 at 9:41 pm

Hola me gusto tu articulo pero no me sirvio el codigo que pusiste

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php

en mi .htaccess tengo solo esto:

RewriteEngine on
ErrorDocument 404 /not-found.html
RewriteCond %{HTTP_HOST} ^(midominio.com)(:80)? [NC]
RewriteRule ^(.*) http://www.midominio.com/$1 [R=301,L]

Como los debo combinar?

O deben ser 2

o le tengo que agregar algo mas…

Lo que quiero ocultar son las extensiones .html y .php
de mi web, me darias el codigo para que lo pegue?

Gracias de antemano y exito con tu web

Saludos

Daniel Quevedoreply
16 agosto, 2011 at 11:54 pm

Hola Merino, gracias a tí por visitar Katharsix.

Tu fichero .htaccess tiene que ser una combinación de ambos códigos: el tuyo que ya tenías y el publicado en esta noticia por dos veces, uno para las páginas php y otro para las páginas html, quedando de la siguiente manera:

RewriteEngine on
ErrorDocument 404 /not-found.html
RewriteCond %{HTTP_HOST} ^(midominio.com)(:80)? [NC]
RewriteRule ^(.*) http://www.midominio.com/$1 [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^(.*)$ $1.html

Copia y pega este mismo código en tu fichero .htaccess y debe funcionar perfectamente ambas redirecciones. Si tienes problemas no dudes en comentárnoslo.

Un saludo 🙂

merino.renatoreply
17 agosto, 2011 at 12:51 am

Muchas gracias por la ayuda,
ya pegue el codigo pero no funciona como esperaba,

si le quito manualmente el.php si se ve la pagina bien

pero si toco digamos un enlace hacia otra web no me la despliega sin el .php o el .html

Asi es como debe de funcionar?

o desde el html se le debe borrar el .php
para que no se vea en el navegador?

Muchas gracias de todas formas

merino.renatoreply
17 agosto, 2011 at 1:00 am

Muchas gracias:

Quitando desde el html la extension.php al archivo funciona perfecto.

Mucho exito con tu blog lo he agregado a favoritos.

Gracias

Cristianreply
20 agosto, 2011 at 4:50 am

Gracias y exitos con tu blog

DaR3Yreply
11 octubre, 2011 at 11:25 am

Hola, he diseñado una aplicación en PHP y usando este código me va perfecto, solamente tengo 2 inquietudes.

1. Como puedo hacer para agregar una barra diagonal al final del nombre del archivo, ej:

http://www.misitio.com/quienes-somos (así queda con este manual)
http://www.misitio.com/quienes-somos/ (como quisiera que quedara)

2. Como puedo evitar que se pueda acceder a las paginas cuando alquien le agrega la extension .php, y que en consecuencia envie a una pagina de error 404.

Gracias por su ayuda, muy buen blog, no lo conocia pero ya lo tengo en favoritos.

Daniel Quevedoreply
11 octubre, 2011 at 1:30 pm
– In reply to: DaR3Y

Hola,

Pues si no me equivoco para añadir una “/” al final de todas las redirecciones de archivos .php es tan simple como esto (no lo he testeado pero debería valer):

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$/ $1.php

Sobre el otro punto de evitar acceder a las paginas por extensión .php se me ocurre una manera más optima y es a través de PHP y no por htaccess. Algo así como “if($_SERVER[“REQUESTED_URI”] == “nombre_fichero.php”)” que te redirecciones a la página de error 404. Por htaccess no se me ocurre ahora la manera…

Guillermo Lopezreply
30 enero, 2012 at 3:45 am

Hola Buenas noches.

Quisiera que me den una ayudadita por favor, ya leei como es que funciona este codigo para acultar las extenciones
de los archivos en mi sitio web, el problema es que no se como hacerlo, segun lo que entendi es creear una carpeta con el nombre .htaccess en la raiz de mi server, ahora lo que no se como hacer es meter el codigo en que lo meto un txt o un html o en que… disculpen si es que esto es algo muy facil pero no entiendo muy bien. Gracias!

Daríoreply
30 enero, 2012 at 11:09 am
– In reply to: Guillermo Lopez

Hola Guillermo,
Efectivamente tienes que crear un fichero de texto (bloc de notas, textedit, gedit…) llamado .htaccess con el contenido citado en este tutorial y subirlo al raíz de tu sitio web.

Un saludo.

Guillermo Lopezreply
7 febrero, 2012 at 2:36 am

Hola primero que nada una disculpa por responder hasta ahora, pero no habia tenido nada d tiempo en este mismo momento voy a intentarlo de nuevo y ya les cuento como me fue, muchas gracias! =)

Guillermo Lopezreply
7 febrero, 2012 at 2:45 am

Hum no me funciona =( lo que hice es crear un archivo txt con el nombre de .htaccess y quedo .htaccess.txt asi tendria que ser? y lo meti en la raiz bueno mi hospedaje tiene muchas carpetas y entre esas donde esta mi sitio web es el httpdocs tendria que ser donde estan las carpetas o dentro de httpdocs Gracias por su tiempo! =)

Charlyreply
21 febrero, 2012 at 1:31 am

Gracias por el artículo … me ayudo muchísimo … Suerte!

Ruben_Zonereply
26 febrero, 2012 at 4:12 am

Hola, mira la verdad no entendí como quitar la extencion “.php”

En mi web tengo los siguientes directorios:
> index.php
> noticias.php
> editar.php
> buscar.php
> ver.php
> registro.php
> conectar.php
> conexion.php
> config.php
> antecedentes.php

Ahora quiero que estos directorios se vean con el mismo nombre, pero sin el .php

Ejemplo:

localhost/mi-web/conectar
localhost/mi-web/registro
localhost/mi-web/editar

Gracias igualmente ^^

etc…

Daríoreply
26 febrero, 2012 at 12:10 pm
– In reply to: Ruben_Zone

Hola Ruben_Zone.
En la entrada está perfectamente explicado cómo conseguir ese efecto que pides.

Te recomiendo que lo leas de nuevo con calma y entenderás todo.

Un saludo.

Eduardoreply
9 marzo, 2012 at 2:14 am

Hola a todos a mi me gustaria que me pudieran ayudar o explicar un poco ams del archivo .htaccess ya que tengo un sitio y se muestran varios .php ya entendi bien el ejemplo que pusieron al inicio para quitar las extensiones pero ami me gustaria hacer esto en mi sitio para poder tener acceso a el es http://www.dominio.com.mx/carpeta/carpeta/archivo.php yo quiero que solo quede http://www.dominio.com.mx y que no se muestren hasta donde estan almacenados mis archivos es posible hacer eso y como se los agradeceria mucho ya que ya llevo bastante tiempo con el sitio asi de ante mano muchas gracias.
Saludos!!!

Daríoreply
9 marzo, 2012 at 9:36 am
– In reply to: Eduardo

Hola Eduardo, lo que buscas no es posible con .htaccess. Un saludo.

david alexisreply
28 marzo, 2012 at 11:00 pm

muchas gracias esto me sirvio de mucho y jala a la perfeccion

Marthareply
13 abril, 2012 at 4:33 pm

Hola a todos, ojala me pudiesen echar una manita.
Osea que para empezar debo pasar TODAS mis páginas a php? porque todas las tengo en html. Y luego crear el archivo .htaccess?
Gracias

Daríoreply
14 abril, 2012 at 4:15 pm
– In reply to: Martha

No necesariamente. Si lees bien la entrada explicamos que para quitar la extensión .html es posible con ese mismo script (y explicamos cómo hacerlo).

Saludos.

Cesarreply
18 abril, 2012 at 2:27 am

Ruben Zone

Lee bien el El Articulo,
claro que se puede no es tan dificil despues de todo,
igual a mi no me salia! …

Solo copia y pega lo siguiente en tu .htaccess

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ $1.php [L,QSA]
# http://tudominio.com/conectar -> http://tudominio.com/conectar.php

Cesarreply
18 abril, 2012 at 2:29 am

POr Sierto Muy Buen Post Daniel Quevedo!…
y de antemano Gracias , me sirvio de Mucho.

rofryreply
15 mayo, 2012 at 8:40 pm

Hola como puedo evitar el contenido duplicado? en herramientas de webmaster me dice que tengo metadescripciones duplicadas y es por que en mis url puedes acceder al mismo contenido poniendo extension .php y .html de esa forma google piensa que tengo contenido duplicado ¿con el codigo de arriba para el .htaccess se soluciona?

Daríoreply
16 mayo, 2012 at 5:35 pm
– In reply to: rofry

Hola rofry. Efectivamente podría ser una solución. Otra es indicarle la URL canónica por medio de las etiquetas meta.

Saludos.

trabajoreply
21 mayo, 2012 at 5:47 pm

no se podría quitar las extensiones .html de una web con la redirección 301??

Daríoreply
21 mayo, 2012 at 9:20 pm
– In reply to: trabajo

No, una redirección no es equivalente con esto. Una cosa es renombrar (más o menos lo que se hace con este script) y otra es redireccionar. Si usas una redirección 301 al fichero sin la extensión sólo lograrás un hermoso 404 error (not found).

Saludo.s

Miguelreply
1 junio, 2012 at 10:47 pm

hola necesito de ayuda
he leido q’ se puede quitar las extenciones de .html y .php desde la carpeta raiz
pero quiero quitar la extencion de las sub carpetas
ejemplo:
http://dominio.com/carpeta/fichero.php
http://dominio.com/carpeta/fichero

alexreply
11 junio, 2012 at 3:36 am

hola…:
estaba leyendo el articulo y no logro entenderlo, si me pueden ayuda porfavor, lo que busco es ocultar un directorio y la extencion del archio ej:
asi se ve:
http://www.midominio.cl/html/contacto.php
Y yo quiero que se vea asi:
http://www.midominio.cl

Lucas Ignacio Quevedoreply
11 junio, 2012 at 2:03 pm

Hola que tal primo como andas ? La verdad que muy buen tutorial ahora lo voy a implementar en mis paginas web muchas gracias !

Daríoreply
12 junio, 2012 at 10:25 am
– In reply to: Lucas Ignacio Quevedo

Gracias, nos alegra que te sea útil.

Diegoreply
28 junio, 2012 at 4:49 pm

Muchas gracias por los códigos, pero he intentado de todo un poco y en mis proyectos siempre aparecen las extensiones, tengo el wamp instalado y esta el mod_rewrite activado pero nada.
Ya he leído al respecto, he probado varias cosas pero sigue sin funcionar.

Alguna sugerencia??

Gracias

Romarioreply
9 agosto, 2012 at 2:31 am

Hola, tengo una pregunta, abri el .htaccess para modificarlo pero no tenia nada, Es normal eso?. y ya hice todo eso pero no me funciona, espero que alguien me pueda ayudar. Gracias

Daríoreply
9 agosto, 2012 at 7:21 pm
– In reply to: Romario

El fichero .htaccess no tiene por qué existir. Si sigues los pasos que indicamos en la entrada debería funcionar, pues está basado en ejemplo que funciona.

Romarioreply
10 agosto, 2012 at 8:50 pm

muchas gracias ya me fuciono perfectamente, Muy buena informacion

Manuel Antonyreply
22 agosto, 2012 at 5:19 am

hola
segui todos los pasos a la perfección, pero aun no se ha quitado la extension html, solo se quita cuando manualmente borro la extensión en la barra de dirección web.
lo que deseo es que se vea sin la extencion , sin la necesidad de quitarlo manualmente.

Daríoreply
22 agosto, 2012 at 10:26 am
– In reply to: Manuel Antony

Hola Manuel,
El ejemplo de la entrada funciona perfectamente. Inténtalo de nuevo.

Saludos.

Manuel Antonyreply
23 agosto, 2012 at 4:15 pm

Darío
Te explico, me funciona de esta forma:
pasa que puedo enviar mis enlaces sin la extencion
ejemplo: http://www.midominio/conocenos
pero cuando abro mi web y le doy click a mi boton “conocenos”
en la barra del navegador me sale con la extención.
esto es lo que puse en el “.htaccess”

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^(.*)$ $1.html

espero me ayas entendido y que tambien me puedes decir que es
lo que pasa.

Gracias.

jrondonreply
20 septiembre, 2012 at 5:33 am

Hola asi como estan explicado es complicado entenderlo.. deveria decir que cuando vamos hacer esto tenemos que colocar algo mas si no volvemos loco, como me paso a mi… YO SOY NUEVO EN ESTO… al final lo hice de esta forma..
(htaccess)
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
ErrorDocument 404 http://www.tudominio.com/404.php
RewriteRule ^(([^/]+/)*[^.]+)$ /$1.php [L]

(enlazar pagina)..
Login

el pedo consiste es en el href… si no hace esto esta en el horno… asi fue que lo pude resolver..Y PUDE ESCONDER EL .PHP

(OJO ASI TAMBIEN FUNCIONA)
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ /$1.php

(LO QUE NO ME SALE ES COLOCAR LA BARRA AL FINAL)
http://www.tudominio.com/login/
eh probado de varia forma pero no me sale nada.. alguien me puede dar una mano… vi el ejemplo anterios pero nada..

KarlosPegareply
24 septiembre, 2012 at 9:43 am

Excelente aporte si me funciono sin problemas 😉

Gracias!!

Maurireply
22 noviembre, 2012 at 1:11 pm

¿Al mostrar la página con extensión y sin extensión puede ser considerado como contenido duplicado?

Quería comenzar un sitio web sin extensiones. Todavía no está en google y la duda me surge si al poder entrar en la página sin extensión o con extensión me lo pudiera considerar duplicado.

Gracias

Daríoreply
22 noviembre, 2012 at 1:23 pm
– In reply to: Mauri

Hola Mauri,
para que no te lo tome como duplicado deberías hacer, además de lo aquí expuesto, una redirección de la url con extensión a ella misma sin extensión, para que google entienda que son la misma y no lo considere duplicado.

Saludos.

Maurireply
22 noviembre, 2012 at 3:20 pm

Muchas gracias Darío!!!

Voy a ello.

Maurireply
22 noviembre, 2012 at 4:41 pm

.htaccess dominio sin www, url sin extensión y redirección si escribes extensión php a sin extensión

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.(.*) [NC]
RewriteRule ^(.*)$ http://%1/$1.php [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php

RewriteCond %{THE_REQUEST} ^GET (.*).php HTTP
RewriteRule (.*).php$ /$1 [R=301,L]

Con esto, entonces, no hay posibilidad de que me considere contenido duplicado?

Maurireply
23 noviembre, 2012 at 1:27 pm

Con esto queda solucionado el duplicado?????

alexreply
2 diciembre, 2012 at 10:13 pm

Mauri estoy igual que tu. Veo que no te han contestado pero te has podido informar si haciéndolo del modo que has escrito en este último comentario se considera duplicado ?

Daríoreply
2 diciembre, 2012 at 10:56 pm

Hola Mauri y Alex,
mis disculpas por la tardanza.

En principio no debería considerarlo duplicado cuando hay una redirección de la url con extensión hacia sí misma sin extensión (Google entiende que son lo mismo por lo que sólo indexaría una).

Saludos.

Maurireply
2 diciembre, 2012 at 11:13 pm

Hola Álex, finalmente lo hice como puse y parece que bien.

Gracias Darío.

Saludos a los dos.

alexreply
3 diciembre, 2012 at 2:01 pm

Gracias a los dos por contestar y por la aclaración.
Saludos

alexreply
3 diciembre, 2012 at 2:49 pm

Por cierto si a todo esto incluyo en el código que tambiém me redirija a la url sin extensión si ponen la url con un slash al final (/) sigue valiendo igual ? Gracias

Jesusreply
7 diciembre, 2012 at 8:13 pm

Hola tengo un sitio web todo en HTML y me interesaría ocultar o HTML o directamente que salta el http://www.sitioweb.com.

He buscado y probado y no consigo nada, no se que hacer ya.

Daríoreply
10 diciembre, 2012 at 1:40 pm
– In reply to: Jesus

Hola Jesús,
Con lo que publicamos en esta entrada se consigue lo que tu quieres.

Saludos.

nanokreply
17 diciembre, 2012 at 4:45 pm

Hola! gracias por el aporte, pero mi web no tiene nada de php, esta todo en html. Mi pregunta es:

con éste código:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^(.*)$ $1.html

¿sirve para generalizarlo en todos los archivos, o tengo que ponerlo uno a uno?

No me está funcionando y no estoy seguro de si lo hago bién.

Daríoreply
17 diciembre, 2012 at 10:54 pm

Hola Nanok,
puedes copiar el código que se explica en la entrada y sustituir la extensión .php por la .html. Con eso debería servir para lo que buscas.

Saludos.

DanideVitoreply
21 febrero, 2013 at 8:04 pm

Tengo hosting en 1&1 y el mod_rewrite funciona perfectamente. Pero gran aporte¡¡

Gracias

Virgilioreply
22 abril, 2013 at 7:21 pm

hola, mi .htaccess empieza así
# Do not remove this line, otherwise mod_rewrite rules will stop working
RewriteBase /
tendría q borrar eso y copiar tu código?

Daríoreply
22 abril, 2013 at 9:51 pm
– In reply to: Virgilio

Hola Virgilio, puedes incluirlo tras esas líneas que tiene tu .htaccess.

Debería funcionar correctamente.

Saludos.

Virgilioreply
25 abril, 2013 at 5:27 am

hola, me funciono bien, antes q nada gracias
Y te queria preguntar si se puede “eliminar una carpeta”

la ruta del enlace vendria a ser algo asi
dominio/web/@usuario/index.html
y si hay algo q pueda omitir el “web” y q se pueda acceder así
dominio/@usuario/…
saludos y gracias de nuevo

RemiseroStudioreply
10 julio, 2013 at 3:38 am

hola yo tengo esto en mi web

RewriteEngine On
RewriteCond %{HTTP_HOST} ^remiserostudio.com
RewriteRule (.*) http://www.remiserostudio.com/$1 [R=301,L]
RewriteRule ^index.(php|html|htm)$ http://www.remiserostudio.com/ [R=301,L]

Order allow,deny
Deny from all

RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www.)?remiserostudio.com(/)?.*$ [NC]
RewriteRule .(gif|jpg|png)$ http://www.remiserostudio.com/nodisponible.gif [R,L]
ErrorDocument 404 /error404.php
Options +FollowSymlinks
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ /$1.php [L,QSA]

AddOutputFilterByType DEFLATE text/text text/html text/plain text/xml text/css application/x-javascript application/javascript
ExpiresActive On
ExpiresDefault A0

# expiracion de 1 mes para archivos estaticos

ExpiresDefault “access plus 1 months”

RewriteCond %{HTTP_USER_AGENT} ^$ [OR]
RewriteCond %{HTTP_USER_AGENT} ^(java|curl|wget) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} (winhttp|HTTrack|clshttp|archiver|loader|email|harvest|extract|grab|miner) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} (libwww-perl|curl|wget|python|nikto|scan) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} (|’|%0A|%0D|%27|%3C|%3E|%00) [NC]
RewriteRule .* – [F]

RewriteCond %{REQUEST_METHOD} GET
RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=http:// [OR]
RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=(..//?)+ [OR]
RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=/([a-z0-9_.]//?)+ [NC]
RewriteRule .* – [F]

Header set X-UA-Compatible “IE=Edge,chrome=1”

el codigo le quito el .php tambien tengo carpetas, pero cuando sale error no sale la pagian de error 404 solo sale erro del servidor 500
y tambien como hago para ocultar los index.php de las carpetas /index.php si lo escriben.

ivan valdesreply
20 julio, 2013 at 10:04 pm

Me fue de gran ayuda. Muchas gracias y suerte con tu web (Y)

PC-SERVEIS, Diseño Webreply
26 julio, 2013 at 10:29 pm

Muchas Gracias Daniel ;))

Después de leer el post, he utilizado el código que has propuesto y funciona correctamente.

Un saludo desde Barcelona ! !

Daniel Quevedoreply
24 agosto, 2013 at 10:32 pm
– In reply to: PC-SERVEIS, Diseño Web

Me alegra saber que te sirvió el código. Gracias a tí por visitarnos 🙂

fernandoreply
24 agosto, 2013 at 10:25 pm

que tal compañero el post esta muy bien te quiero hacer una pregunta en mi caso si en mi sitio web la mayoria de mis paginas son .html pero tengo unas dos .php como puedo hacer le????????????????????? ayuda espero tu respuesta y de antemano muxhas gracias por la info

Daniel Quevedoreply
24 agosto, 2013 at 10:29 pm
– In reply to: fernando

Hola Fernando,

Como ya le comenté a otra persona (ver comentario nº3) simplemente con combinar dos versiones de este código para archivos .html y .php es suficiente. Te pongo el código completo que debes poner:

RewriteEngine on
ErrorDocument 404 /not-found.html
RewriteCond %{HTTP_HOST} ^(midominio.com)(:80)? [NC]
RewriteRule ^(.*) http://www.midominio.com/$1 [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^(.*)$ $1.html

Espero que te sirva. Un saludo.

Impresión Láser Digital RemiseroStudioreply
24 agosto, 2013 at 10:56 pm

Hola antes use esto, y las páginas de error 404 no me funcionaban, ahora uso sub carpetas y parece que todo esta mejor, http://www.remiserostudio.com/impresion-laser/ pero como puedo hacer para que los enlaces en la búsqueda de google no sean tan largos como este: http://www.remiserostudio.com/impresion-laser/tarjetas-personales-al-instante/ y tampoco puedo lograr poner un breadcrumb.
Algún comentario.

Daniel Quevedoreply
24 agosto, 2013 at 11:05 pm
– In reply to: Impresión Láser Digital RemiseroStudio

Hola,

Para hacer las URL más “amigables” con tanta subcarpeta puedes valerte también de .htaccess y el mod_rewrite. Tendrás que insertar lo siguiente en tu fichero .htaccess:

RewriteEngine on
RewriteRule ^tarjetas/$ /impresion-laser/tarjetas-personales-al-instante.html

Esta línea de código reescribiría la URL tan larga que citas por http://www.tuweb.com/tarjetas. Modifícala al gusto. Sabiendo eso podrías añadir tantas líneas como necesites para tus subpáginas.

Un saludo.

Daniel Quevedoreply
24 agosto, 2013 at 11:17 pm
– In reply to: Impresión Láser Digital RemiseroStudio

En cuanto al breadcrumb se me ocurren bastantes maneras de hacerlo “a pelo”… y ninguna me acaba de convencer. Buscando por internet puedes encontrar muchas opciones. Haz la prueba. Si indagas un poco por Google encontrarás maneras de lograrlo gracias a funciones JavaScript y PHP bastante laboriosas…

Pero si quieres un consejo, dado que tu web tiene una dimensión considerable, sobre todo en cuanto a jerarquía y número de páginas y subpáginas, te aconsejo que pruebes a integrar tu web con algún CMS conocido (WordPress) ya que matas dos pájaros de un tiro: WordPress gestiona las url “amigables” (enlaces permanentes o permalinks) automáticamente en tu .htaccess y también te da la opción de insertar un menú de navegación funcional (o breadcrumb como tú le llamas) con 3-4 líneas de código PHP y una función JavaScript sencilla.

Evidentemente no soy quien para obligarte a integrar tu web con un gestor de contenidos como WordPress, solo es un consejo. Apuesto a que el tiempo que inviertas en integrar WordPress, o cualquier otro CMS, te evitará muchos quebraderos de cabeza y tiempo que si tratas de hacer lo que quieres “a pelo”.

Un saludo.

Jeferson Andresreply
21 octubre, 2013 at 5:25 am

Muchas gracias me fue de gran ayuda

Santiagoreply
21 octubre, 2013 at 8:13 pm

Muy buen aporte. Funciona perfecto
Lamentablemente me surgió un problema.
Un cliente tiene Plataforma Hosting Windows, al subir los archivos no realiza el cambio. Pero al probarlo en una Plataforma Hosting Linux, si los toma.
Que solución existe para este tipo de problemas?

Desde ya muchas gracias por la ayuda!

Daniel Quevedo Ortizreply
27 mayo, 2014 at 8:56 am
– In reply to: Santiago

Hola, en Windows es más habitual hacer este tipo de configuraciones mediante los ficheros de configuración Web.config. No obstante debería funcionarte, pregunta al soporte de tu hosting windows si realmente están habilitados los módulos necesarios (rewrite_module o rewtire_engine, el nombre puede variar)

LV Studioreply
9 noviembre, 2013 at 3:17 am

Funciona perfecto, gracias!

Jorgereply
22 abril, 2014 at 2:33 pm

Hola,

Tengo una pagina web le he insertado tu codigo en el htaccess que tengo en la misma carpeta de los archivos php y no me hace ni caso…

Saludos

Daniel Quevedo Ortizreply
4 mayo, 2014 at 8:45 pm
– In reply to: Jorge

Hola Jorge, cada servidor y proveedor es un mundo… pero generalmente los archivos .htaccess se deben colocar en el mismo directorio raiz donde apunta tu web. Si el código es correcto debería funcionar sin problema.

Noisereply
12 mayo, 2014 at 2:28 pm

saludos ami tampoco me funciona 😛

Daniel Quevedo Ortizreply
27 mayo, 2014 at 8:51 am
– In reply to: Noise

Hola, lo acabo de probar y sí funciona. Algo estás haciendo mal… ¿podría ser más concreto? Gracias.

Carmen Gonzálezreply
21 julio, 2014 at 7:50 pm

Muchisimas gracias por este artículo. Después de mucho buscar, lo he encontrado y ha sido el que me ha solucionado el problema.
Muchas gracias

Leave a reply

Este sitio usa Akismet para reducir el spam. Conoce cómo se procesan los datos de tus comentarios.