En el tutorial de hoy vas a aprender a eliminar las extensiones de los archivos .php y .html de las URLs utilizando el archivo .htaccess. Seguramente has visto en muchos sitios web, que sus urls no muestran las extensiones de los archivos a los que llaman. Tú también puedes hacer lo mismo en tu sitio web o en tus proyectos usando el archivo .htaccess.
Recientemente, estaba yo trabajando en un proyecto personal y quería quitar las extensiones de la url de la web, con el fin de hacer que las direcciones URL sea más sencillas de usar, pero sin llegar a implementar un entramado de urls amigables. Así que pensé, ¿por qué no compartir este sencillo consejo con el archivo .htaccess con todos vosotros? Vamos a echar un vistazo a cómo eliminar las extensiones .php y .html con el archivo .htaccess.
Comencemos
Un archivo .htaccess es un fichero ASCII que puedes crear con un editor de texto como Notepad o Notepad++. Proporciona una manera de cambiar la configuración en un directorio. A parte de lo que te vamos a enseñar hoy, puedes hacer muchísimas cosas con este archivo como redireccionar al usuario a otras páginas, proteger un directorio con una contraseña, redirecciones 301...
Eliminar la extensión .php
Para eliminar la extensión php de las urls de tu sitio web, supongamos que tenemos la siguiente url de ejemplo:
http://tusitio.com/registro.php
Y la queremos convertir a:
http://tusitio.com/registro
¿Cuál crees que es mejor para el SEO? Obviamente la segunda, ¿verdad? Ahora, para implementar esto, debes poner el siguiente código dentro del archivo .htaccess. Por tanto, crea un nuevo archivo con cualquier editor de texto y guardalo como .htaccess. El siguiente código es para la extensión .php.
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php
</IfModule>
Después creamos un nuevo fichero llamado login.php y lo guardamos el carpeta raíz donde también hayas guardado el fichero .htaccess. Ahora podrás acceder a la url sin tener que poner la extensión del fichero php. Es decir, en este caso, podemos hacer referencia a login.php sin tener que usar la extensión .php, solamente con login.
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Remove .php extension with .htaccess by http://www.codingcage.com/</title>
</style>
</head>
<body>
<h1>This is login.php page | <a href="login">click here</a> to remove .php extension and see the url in addressbar</h1>
<a href="signup">signup here</a>
</body>
</html>
Eliminar la extensión .html
Haz lo mismo que te he enseñado antes pero simplemente cambiando la línea de código en la que hacemos referencia a la extensión, que en el anterior caso era .php, y en este debe ser .html.
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.html-f
RewriteRule ^(.*)$ $1.html
</IfModule>
Añadiendo la barra al final de la url
Ok, parece que está todo hecho ya, pero vamos a perfeccionarlo un poco más. Ahora vamos a añadir una barra al final de la url tal que así:
http://tusitio.com/login/
Si quieres implementar también esto en tu sitio web, reemplaza el código "RewriteRule ^(.*)$ $1.html" por "RewriteRule ^([a-z]+)/?$ $1.html [NC]" y automáticamente siempre añadirá la barra (la del 7) al final de cada url.
Código .htaccess final para esconder la extensiones .php y .html
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php
#RewriteRule ^([a-z]+)/?$ $1.php [NC]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^(.*)$ $1.html
#RewriteRule ^([a-z]+)/?$ $1.html [NC]
</IfModule>
Ahora puedes enlazar tus páginas html y php dentro de cualquier documento HTML sin necesidad de utilizar las extensiones .php y .html propia de los archivos. Por ejemplo:
<a href="http://tusitio.com/login">login</a>
Fuente: codingcage.com