Archivo de la categoría: Apache

Directivas de htaccess de Apache

El fichero htaccess de Apache es usado para configurar el comportamiento que queremos para nuestro servidor, o para un determinado directorio o fichero de nuestra web.

En los siguientes enlaces encontrarás información oficial de las directivas disponibles para htaccess, en las diferentes versiones de Apache:

htaccess para Apache 1.3.

htaccess para Apache 2.0.

htaccess para Apache 2.1.

htaccess para Apache 2.2.

Anuncios

Permalinks en Apache (urls amigables)

¿Qué es un permalink? Un permalink no es más que una URL que tiene parámetros, pero estos parámetros son mostrados no como parámetros, y sí de forma amigable.

¿Ventajas? Muchas, entre ellas cabe destacar dos: El usuario puede recordar más facilmente la URL, y los navegadores indexarán mejor nuestras páginas porque podemos hacer que la URL contenga palabras clave (esto en el mundo SEO es muy importane).

Si nuestras URLs tienen la forma:

http://www.websenior.es/noticia/n=1

hacer que tengan la forma

http://www.websenior.es/noticia/2008/11/31/descubren-agua-en-la-luna

Si nuestro servidor web es Apache, tendremos que indicarle que vamos a usar los permalinks. Esto se hace con el módulo mod_rewrite.

He recopilado unos enlaces en los cuales explican como hacerlo, espero os sean de utilidad:

Guía de reescritura de URL oficial de Apache. (en inglés)

Reescritura de URL para novatos. (en inglés)

Guía básica para reescribir URLs.

Entorno de desarrollo WAMP AppServ

Entendemos WAMP como un entorno de desarrollo web compuesto de:

  • Sistema operativo: Windows.
  • Servidor web: Apache.
  • Servidor de base de datos: MySQL.
  • Lenguaje programación: PHP

LAMP es lo mismo que WAMP, pero en vez de usar Windows como sistema operativo, usamos Linux.

Está claro que un profesional del desarrollo web debería ser capaz de instalar y configurar correctamente su propio entorno de desarrollo. No obstante hay veces en las que tenemos que preparar un entorno temporal  o de pruebas. En estos casos, contamos con algunos instaladores para Windows. De los que yo he probado, prefiero el instalador integrado AppServ porque es muy fácil de instalar,  su configuración estándar es más que suficiente y en caso de necesitar algún cambio no es nada complicado hacerlo.

Puedes acceder a su web oficial y obtener más información y la descarga en el siguiente enlace:

AppServ Open Project.

Técnicas SEO (II) – Redirect 301

Vamos a ampliar el anterior artículo de técnicas SEO una técnica quizás menos conocida para el público en general. Un problema que podemos tener en nuestro servidor web, es que el buscador interprete que http://www.websenior.com y websenior.com sean “direcciones distintas”. Exactamente lo que puede pasar en ese caso es que interprete que para http://www.midominio.com nos enlazaron X veces y para midominio.com ninguno, lo cual no es lógico semánticamente hablando.

Lo que debemos hacer para solucionar este problema es una especie de redirección para asegurarnos que todas las peticiones que se hagan a midominio.com, se enlacen a http://www.midominio.com, y esto es el famoso “Redirect 301”.

Una posible forma de hacerlo es mediante el fichero .htaccess, con el que ya hemos visto alguna que otra utilidad. Lo que debemos hacer es añadir estas líneas al fichero (crearlo si no existe obviamente) y subirlo a la misma carpeta pública donde tengamos nuestro index.

Options +FollowSymlinks
RewriteEngine on
rewritecond %{http_host} ^midominio.com [nc]
rewriterule ^(.*)$ http://www.midominio.com/$1 [r=301,nc]

Éste método funciona para servidores Linux Apache con el módulo Mod-ReWrite activado.

Por cierto, ¿sabías que la duración del contrato de tu dominio también es un factor de posicionamiento en los buscadores?

UTF-8 en ficheros HTML/XHTML de Apache usando .htaccess

Algunas veces puede interesarnos (y de hecho pudiera ser recomendable) que nuestros ficheros HTML/XHTML tengan codificación UTF-8, para permitir un gran abanico de caracteres de diversos idiomas no occidentales, por ejemplo.

Lo primero que deberíamos hacer es poner en nuestro fichero HTML/XHTML la siguiente etiqueta meta:

<meta http-equiv="content-type"
      content="text/html; charset=utf-8"/>

Pero es posible que al probar nuestra web, no esté mostrando los caracteres UTF-8 correctamente, o bien si validamos la web en W3C para comprobar que sea un HTML/XHTML válido nos encontremos con un fallo como este:

The character encoding specified in the HTTP header (iso-8859-1)
is different from the value in the <meta> element (utf-8).

Entonces debemos forzar al servidor Apache de nuestro servidor a que sirva las páginas .html en UTF-8 al navegador. Esto se consigue añadiendo al fichero .htaccess la linea:

AddCharset UTF-8 .html

Con esto conseguimos que todos los ficheros .html que cuelguen del directorio donde se encuentre el .htaccess (y subdirectorios), sean servidos al navegador con codificación UTF-8.

Esto se puede complicar más 🙂

<Files "example.html">
AddCharset UTF-8 .html
</Files>

Esto hace que solo el fichero example.html de ese directorio sea servido como UTF-8.

También podemos hacer algo así:

<Files "example.html">
ForceType 'text/html; charset=UTF-8'
</Files>

Esto fuerza a que el fichero example.html sea servido como UTF-8, y además de tipo texto plano con contenido HTML.

Por último, este ejemplo:

AddCharset UTF-8 .utf8
AddCharset windows-1252 .html

Aquí se dice al servidor Apache: Todos los ficheros con extensión .utf8 sírvelos al navegador con codificación UTF-8. Y todos los ficheros .html sean servidos con codificación windows-1252.

Os invito a dejar como comentarios más ejemplos de uso de las directivas AddCharset y ForceType, u otras relacionadas con el contenido y codificación de ficheros, para el fichero .htaccess de Apache.

Proteger carpetas públicas del servidor web

Como ya sabrás obviamente, Apache cuenta con una carpeta configurable en la que desplegamos nuestros websites o aplicaciones webs. Si queremos restringir el acceso a nuestras aplicaciones, normalmente hacemos nuestro formulario de login que valide al usuario, ya sea en ASP, PHP, JSP… Por otra parte los ficheros de configuración (acceso a base de datos, direcciones IP de servidores de base de datos o web services, etc) que conforman la parte pricada de la aplicación para que no sean accesibles lo guardamos en alguna carpeta fuera del directorio público.

En ocasiones necesitamos que algunos ficheros estén accesibles a través del servidor para cierto usuario, pero a su vez, digamos que éstos no forman parte de nuestra aplicación. Imaginemos que nuestra aplicación genera un fichero log con los accesos al sistema. Podríamos ver el contenido de este log a través del servidor desde cualquier equipo, pero realmente no tiene mucho sentido que nos identifiquemos en la aplicación (pues no vamos a usar sus funcionalidades) pero tampoco son datos que deban estar expuestos a cualquiera.

Lo que podemos hacer es proteger este fichero usando la configuración del servidor en lugar del código de nuestra aplicación y que el explorador nos muestre una ventana de logueo. En el caso de Apache y Linux, debemos hacer lo siguiente:

1. Permitir que Apache pueda solicitar Autorización. Para ello editamos con cualquier editor de texto el archivo httpd.conf y buscamos la línea:

AllowOverride None

y sustituimos LA SEGUNDA OCURRENCIA (NUNCA LA PRIMERA; OJO) por

AllowOverride AuthConfig

2. Creamos la carpeta a proteger. Por ejemplo:

/var/www/html/websenior/logs

3. Añadimos la restricción de acceso. Debemos añadir dos ficheros a la carpeta, .htaccess (con el punto) que nos indica las propiedades del acceso y lista de usuarios que podrán acceder y .htpasswd (con el punto también) que incluye cada usuario y contraseña de entrada.

Nuestro .htaccess quedaría:

AuthName "Control de acceso restringido"
AuthType Basic
AuthUserFile /var/www/html/websenior/logs/.htpasswd
Require user kurroman

El .htpasswd no es posible generarlo directamente a través de un editor de texto, aunque existen herramientas para su creación, desde shell podemos hacer:

htpasswd -cmb .htpasswd kurroman mipassword

se finit!

¿Como añadimos mas usuarios? Debemos editar una linea en el .htaccess de la forma:

Require user kurroman fjtorres

y añadir su contraseña al .htpasswd lanzando en el shell la sentencia:

htpasswd -mb .htpasswd fjtorres supassword

fijaros que ahora hemos quitado la opción “-c” del comando. Si no la quito, me borraría y crearía de nuevo el .htpasswd, perdiendo los usuarios que ya existian.

¿y como borro usuarios manteniendo el resto? Pues editamos el .htaccess y quitamos el usuario, luego lanzaríamos la sentencia:

htpasswd D fjtorres

y con esto eliminamos al usuario.

Espero que os sea útil este artículo.