Archivo de la etiqueta: apache

Redirigir url por idioma en htaccess

Si tienes un sitio web en Apache y necesitas redirigir a una dirección url distinta por cada idioma (inglés, español, portugués…) puede ser muy útil hacerlo mediante htaccess con la cabecera HTTP:Accept-Language que transmite el navegador del cliente. De este modo «confiaremos» en la configuración de lenguaje que cada usuario tiene en su navegador.

Así que nos ponemos manos a la obra:

Crear estructura de directorios

Deberemos crear un directorio por cada uno de los idiomas.

Por ejemplo si nuestro dominio es midominio.com crearemos en la raíz tantas subcarpetas como idiomas queramos manejar:

midominio.com/pt

midominio.com/es

midominio.com/en

Editar el archivo .htaccess

Añadiremos estas líneas:


RewriteEngine On
RewriteBase /

# Lenguaje portugués: 'pt'
RewriteCond %{HTTP:Accept-Language} ^pt [NC]
RewriteRule ^/?$ pt/ [R,NC,L]

# Lenguaje portugués: 'es'
RewriteCond %{HTTP:Accept-Language} ^es [NC]
RewriteRule ^/?$ es/ [R,NC,L]

#Regla general para los demás casos
RewriteRule ^/?$ en/ [R,NC,L]

En el código podemos comprobar que se establecen diversas reglas de redireccionamiento para cada condición de la cabecera enviada por el navegador.

Redireccionar url en función del navegador en Apache

En ocasiones es necesario añadir reglas de redireccionamiento dependiendo el navegador que utilice nuestro cliente web.

Para ello podemos utilizar el archivo .htaccess e indicar unas directivas en función del navegador que se esté utilizando el cliente.

El siguiente bloque escrito en htaccess puede ser muy útil si tienes sitios que no se muestran correctamente en navegadores viejos y obsoletos:


<IfModule mod_rewrite.c>
RewriteEngine On

RewriteCond %{HTTP_USER_AGENT} "MSIE 8" [or]
RewriteCond %{HTTP_USER_AGENT} "MSIE 7" [or]
RewriteCond %{HTTP_USER_AGENT} "MSIE 6"

RewriteRule . actualizar-navegador.html [L]

Con esto le estamos diciendo que si el navegador del cliente en Internet Explorer 6, 7 u 8 vaya a una página especial donde le podremos indicar al usuario que necesita actualizar el navegador.


<!DOCTYPE html>

<body>

<div>

...

necesita actualizar el navegador para visualizar correctamente la página, para ello visite los siguientes links...

</div>

</body>

</html>

Redireccionar url en función del navegador en Apache permite también ocultar el acceso a ciertos navegadores. Esto puede ser útil en empresas que tienen intranets y obligan a sus empleados a utilizar un único navegador por seguridad.

Configurar Virtual Host con Apache en Windows

Al montar Apache en Windows puede ser que te encuentres con el problema de descargar un sitio web que funciona correctamente en el servidor pero que al ejecutarlo en local (aunque sí que cargue) pierde estilos, enlaces, javascript y más cosas. Es posible que las rutas que utiliza ese código sean rutas relativas y al situarlo físicamente en tu workspace deje de funcionar.

La solución a este problema tiene un nombre: Virtual Hosts. Con este módulo se permite configurar múltiples sitios dentro de un mismo servidor dándoles los nombres que deseemos.

Existen numerosas formas de configuraciones de virtual hosts en Apache, yo trataré en este post de explicar la forma más común de configuración que consiste en crear varios hosts virtuales dentro de una misma dirección IP. (Si deseas más información puedes acceder a la página de documentación de Apache donde existen numerosos ejemplos).

Comencemos por editar el archivo de configuración de apache httpd-vhosts.conf. Este fichero se encuentra dentro de la ruta donde tengas instalado Apache dentro de la ruta apache\conf\extra. 


<VirtualHost *:80>
DocumentRoot "C:/xampp/htdocs/ejemplo1.com"
ServerName ejemplo1.com</VirtualHost>

<VirtualHost *:80>
DocumentRoot "C:/xampp/htdocs/ejemplo2.com"
ServerName ejemplo2.com

</VirtualHost>

...

Hasta este punto tendremos configurado Apache para albergar diversos sitios web con distinto nombre dentro de este servidor. Nos falta un segundo paso que nos permitirá que cuando introduzcamos en el navegador el nombre de uno de los sitios locales no se vaya a Internet a buscarlos sino a la ruta que nosotros le hemos establecido.

  • Ir a c:\windows\system32\drivers\etc\ y editar con el bloc de notas el archivo hosts
  • Insertar al final:

127.0.0.1 localhost
127.0.0.1 ejemplo1.com

127.0.0.2 ejemplo1.com

Escribiremos tantas líneas con los nombres de sitio como queramos acceder localmente.

Ahora solamente deberás abrir el navegador y meter la url que has establecido como servername, por ejemplo: local.ejemplo1.com 

Cambiar el tamaño máximo para subir ficheros en php

Existe un tamaño máximo para subir ficheros en php. Este viene establecido en el fichero de configuración php.ini dentro de nuestro servidor.

Para aumentar o disminuir dicho valor deberemos editar este fichero de configuración e ir al valor upload_max_filesize.


upload_max_filesize=6M

En el ejemplo anterior el tamaño máximo es de 6 Megas, bastaría con cambiar este valor al  tamaño deseado. Eso sí es necesario reiniciar Apache para que los cambios surtan efecto.

En muchos cms como WordPress, Joomla, Prestashop o Drupal se da mucho un error al intentar subir plantillas, plugins, módulos… en muchas ocasiones esto está relacionado con el tamaño máximo permitido para subir un fichero. Este error se soluciona cambiando los valores de configuración de php.ini como anteriormente hemos descrito.

Como forzar www en url con htaccess

Si quieres forzar  que cualquier petición a apache cambie de «midominio.com» a «www.midominio.com» lo hacemos mediante el archivo htaccess de la siguiente manera:

# Forzamos el "www."
RewriteCond %{HTTP_HOST} !^www\.domain\.com$ [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,L]

Donde domain es el nombre de tu dominio.

Forzar www en url con htaccess te permite mediante las directivas de servidor Apache y archivos htaccess reconducir peticiones http a direcciones más concretas.

Compresión gzip o deflate editando .htaccess con apache

Para habilitar la compresión gzip o deflate antes de nada es fundamental saber si el
servidor apache donde está alojado tu sitio web permite la compresión.
Si es así entonces podremos modificar el archivo .htaccess en la raíz de tu aplicación e insertar esto:


# Compresión GZIP con mod_gzip

<IfModule mod_gzip.c>
   mod_gzip_on Yes
   mod_gzip_dechunk Yes
   mod_gzip_item_include file \.(html?|txt|css|js|php|pl)$
   mod_gzip_item_include handler ^cgi-script$
   mod_gzip_item_include mime ^text/.*
   mod_gzip_item_include mime ^application/x-javascript.*
   mod_gzip_item_exclude mime ^image/.*
   mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
 </ifModule>

 


# Compresión GZIP con mod_deflate
 <IfModule mod_deflate.c>

     AddOutputFilterByType DEFLATE text/css text/javascript
application/x-javascript application/javascript    text/x-component
text/html text/richtext image/svg+xml text/plain text/xsd text/xsl
text/xml image/x-icon     application/json
 </IfModule>

En esta configuración podremos incluir o excluir las extensiones de archivo que creamos convenientes.

Optimizar caché de navegador con htaccess en apache

Si tu servidor de alojamiento web es apache puedes mejorar la velocidad de tu sitio estableciendo el tiempo de la caché insertando dentro del archivo htaccess de la raíz de tu aplicación web:

 # Optimización caché navegador
 <FilesMatch "\.(ico|pdf|flv|jpg|JPG|jpeg|png|gif|js|css|swf)$">
 Header set Expires "Wed, 15 Apr 2020 20:00:00 GMT"
 Header set Cache-Control "public"
 </FilesMatch>

En estas líneas lo que estamos estableciendo es habilitar la caché para los ficheros que contienen las extensiones indicadas «\.(ico|pdf|flv|jpg|JPG|jpeg|png|gif|js|css|swf)$». En el ejemplo se
indica también el tiempo en el que expirará la caché para los archivos indicados: el miércoles 15 de abril del 2020 a las 20:00 horas.

Optimizar caché de navegador permite mejorar el rendimiento para cualquier sitio web que se encuentre en tu servidor apache.

Últimas tecnologías Web

Muchas tecnologías avanzan vertiginosamente hacia un futuro que seguramente no podamos ni imaginar. Este mismo futuro no nos permite ni un solo descanso y nos obliga a seguir aprendiendo. En el área del desarrollo y programación web pasa lo mismo.

Cada cierto tiempo los lenguajes de programación como ASP.Net, PHP, silverlight, etc. realizan cambios y mejoras en su framework aumentando, refinando y adaptando su funcionalidad y, al mismo tiempo, dejando poco a poco obsoletas versiones anteriores.

Por eso es recomendable utilizar las últimas tecnologías al servicio de los clientes. Tecnologías Web:

  • Web 2.0 – jQuery, XHTML, HTML5, AJAX
  • PHP 5.x
  • .Net 4.0 y .Net 4.5 – ASP.Net, Silverlight, Web Services, WCF, Entity Framework
  • CMS – Joomla! 2.5, joomla! 3.0, Drupal 7, WordPress 3.x
  • Datos y SGDB – SqlServer, Oracle, MySql, Pervasive, ODBC, XML, csv…
  • Servidores Web – IIS 6, IIS 7 y Apache.

Si lo prefiere para posibles mantenimientos de antiguos sitios web también tengo amplia experiencia en las versiones anteriores de PHP, ASP Clásico, ASP.Net (1.0, 2.0, 3.0 y 3.5) y joomla 1.6