• ¡Bienvenido a XenFácil!

    Estás viendo el sitio como Invitado. Para poder participar en este sitio

    y obtendrás privilegios adicionales, acceso a otras áreas y mucho mas.

    ¡Es gratis!


    ¿Ya eres miembro? Inicia sesión

.htaccess Configuraciones de .htaccess

lms

Administrador
Mensajes
7.718
Puntuación de reacciones
2.130
Puntos
2.613
Sitio web
xenfacil.com
País
España
Versión de XenForo
2.1.x
PayPal
Donar dinero a este usuario
Página web
Web
¿Cómo se configura el fichero ‘.htaccess‘? Me he guiado por esta página que se guía por este tutorial.

Ahora vamos a ver unos cuantos ‘trucos’ para configurar estos archivos:
  1. Página por defecto que se ejecutará al acceder a la raíz del servidor:
    Insertar CODE, HTML o PHP:
    DirectoryIndex index.html index.php index.htm
  2. Página de error por defecto a la que se redirigen todos los errores 404:
    Insertar CODE, HTML o PHP:
    ErrorDocument 404 /miPaginaDeError.html
  3. Controlar el acceso a archivos y directorios, permitiendo o denegando dicho acceso. Situando un archivo ‘.htaccess’ en una carpeta con este contenido, se bloqueará a todo el mundo el acceso a la misma y a todos sus archivos:
    Insertar CODE, HTML o PHP:
    # Bloquear el acceso a todo el mundo 
    deny from all
    Si se quiere bloquear el acceso a todo el mundo pero exceptuar ciertas direcciones IP, habría que añadir las siguientes líneas:
    Insertar CODE, HTML o PHP:
    # Bloquear el acceso a todo el mundo 
    order deny,allow
    deny from all
    # Dirección a la que si le vamos a permitir acceder
    allow from 192.168.0.0/24
    El caso contrario al anterior sería únicamente bloquear el acceso a una dirección IP, y se configurará de la sigiuente manera:
    Insertar CODE, HTML o PHP:
    order allow,deny 
    # Dirección que queremos bloquear
    deny from 192.168.0.0/24
    # Permitir el acceso al resto
    allow from all
  4. Modificar las variables de entorno, permitiendo agregar (‘setenv’) o eliminar (‘UnSetEnv’) ciertas variables:
    Insertar CODE, HTML o PHP:
    #Añadir nueva variable
    SetEnv SITE_WEBMASTER "Developando"
    SetEnv SITE_WEBMASTER_URI mailto:ideas@developando.com
    #Eliminar variable
    UnSetEnv REMOTE_ADDR
  5. Redicciones permanentes (301) de una página a otra dentro de un mismo servidor. Para ello añadir la siguiente línea:
    Insertar CODE, HTML o PHP:
    #Redirect <codigo> <url_antigua> <nueva URL> 
    Redirect 301 /antiguo/index.html http://miDominio.com/nuevo/index.html
    También podría interesarnos redireccionar todo el contenido de alguna carpeta. Por ejemplo para redireccionar el tráfico a nuestro blog (‘/blog/’) a la raíz del sevidor habría que usar:
    Insertar CODE, HTML o PHP:
    #Redirect <codigo> <url_antigua con patrón> <nueva URL> 
    RedirectMatch 301 /blog(.*) http://yourdomain.com/$1
  6. Configurar la caché de archivos, configurando el tipo de archivo que se quiere cachear y el tiempo que dichos contenidos deben permanecer en la caché antes de ser consultados de nuevo:
    Insertar CODE, HTML o PHP:
    # Mantener en caché durante un año 
    <FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|swf|mp3|mp4)$">
    Header set Cache-Control "public"
    Header set Expires "Thu, 25 Apr 2014 12:00:00 GMT"
    Header unset Last-Modified
    </FilesMatch>
    
    # Mantener en caché durante 2 horas
    <FilesMatch "\.(html|htm|xml|txt|xsl)$">
    Header set Cache-Control "max-age=7200, must-revalidate"
    </FilesMatch>
    
    # SetOutputFilter DEFLATE indica que se deben comprimir los contenidos
    <FilesMatch "\.(js|css)$">
    SetOutputFilter DEFLATE
    Header set Expires "Thu, 25 Apr 2014 12:00:00 GMT"
    </FilesMatch>
  7. Comprimir la salida utilizando GZIP. Añadiendo la siguiente configuración, se indicará que todos los archivos css,js y html se compriman:
    Insertar CODE, HTML o PHP:
    # El módugo mod_gzip deberá estar habilitado en el servidor 
    <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>
  8. Rerigir los buscadores a https (SSL):
    Insertar CODE, HTML o PHP:
    RewriteEngine On 
    RewriteCond %{HTTPS} !on
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
  9. Reescriturar las URLs. Por ejemplo, para usar url amigables, al servidor le llegaría una petición con dicha url y esta debería entenderse como la direccion interna que tiene en el servidor. Por ejemplo:
    Insertar CODE, HTML o PHP:
    # Dirección a la que se está accediendo -> http://www.midominio.com/detalle-producto-14.html 
    # Dirección a la que se necesita cambiar -> http://www.midominio.com/detalles.php?id=14
    RewriteEngine on
    RewriteRule ^detalle-producto-([0-9]+)\.html$ detalles.php?id=$1
    También puede ser interesante redirigir una página sin ‘www’ a una que si lo contenga:
    Insertar CODE, HTML o PHP:
    # Dirección a la que se está accediendo -> midominio.com/ 
    # Dirección a la que se necesita cambiar -> http://www.midominio.com/
    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^midominio\.com$
    RewriteRule (.*) http://www.midominio.com/$1 [R=301,L]
  10. Evitar el acceso al listado de archivos de una carpeta añadiendo una de las siguientes líneas
    Insertar CODE, HTML o PHP:
    # Para bloquear el listado añadir una de estas dos líneas 
    Options -Indexes
    IndexIgnore *
  11. Añadir nuevos MIME-TYPES para evitar problemas en la descarga de archivos con mimeType desconocido:
    Insertar CODE, HTML o PHP:
    AddType application/x-endnote-connection enz 
    AddType application/x-endnote-filter enf
    AddType application/x-spss-savefile sav
  12. Denegar el acceso a archivos estáticos si el origen no es por un gestor de contenidos interno como ‘wordpress’ o está vacío:
    Insertar CODE, HTML o PHP:
    RewriteCond %{HTTP_REFERER} !^$
    RewriteCond %{REQUEST_URI} !^/(wp-login.php|wp-admin/|wp-content/plugins/|wp-includes/).* [NC]
    RewriteCond %{HTTP_REFERER} !^http://www.askapache.com.*$ [NC]
    RewriteRule \.(ico|pdf|flv|jpg|jpeg|mp3|mpg|mp4|mov|wav|wmv|png|gif|swf|css|js)$ - [F,NS,L]
  13. Limitar el tamaño máximo de los archivos que se pueden subir al servidor:
    Insertar CODE, HTML o PHP:
    php_value upload_max_filesize 20M 
    php_value post_max_size 20M
    php_value max_execution_time 200
    php_value max_input_time 200
  14. Bloquear la ejecución de scripts:
    Insertar CODE, HTML o PHP:
    Options -ExecCGI 
    AddHandler cgi-script .php .pl .py .jsp .asp .htm .shtml .sh .cgi
  15. Cambiar la codificación y el lenguaje de las cabeceras:
    Insertar CODE, HTML o PHP:
    AddDefaultCharset UTF-8 
    DefaultLanguage es-ES
  16. Configurar el TIMEZONE del servidor:
    Insertar CODE, HTML o PHP:
    SetEnv TZ Europe/Madrid
  17. Forzar que aparezca la venta de “Guardar como” cuando se acceda a ciertos ficheros:
    Insertar CODE, HTML o PHP:
    AddType application/octet-stream .avi .mpg .mov .pdf .xls .mp4
  18. Protección de un archivo individual. Si se quiere únicamente aplicar la configuración a un único archivo sin verse afectado el resto de contenidos del servidor, añadir estas líneas:
    Insertar CODE, HTML o PHP:
    <Files miPagina.html> 
    order deny,allow
    deny from all
    AuthType Basic
    AuthName "Usuario Auth"
    AuthLDAP on
    AuthLDAPServer ldap://listado.miDominio.com/
    AuthLDAPBase "ou=Usuario, o=Developando company, c=au"
    require valid-user
    satisfy any
    </Files>
  19. Configuración de cookies. Crear cookie usando alguna de las variables de entorno:
    Insertar CODE, HTML o PHP:
    Header set Set-Cookie "language=%{lang}e; path=/;" env=lang
    Crear cookie usando las cabeceras de la petición que se recibe en el servidor:
    Insertar CODE, HTML o PHP:
    RewriteEngine On 
    RewriteBase /
    RewriteRule ^(.*)(de|es|fr|it|ja|ru|en)/$ - [co=lang:$2:.miDominio.com:7200:/]
  20. Envío de cabeceras:
    Insertar CODE, HTML o PHP:
    Header set Content-Language "es-ES"
    Header set Vary "Accept-Encoding"
  21. Bloquear el acceso comparando por User-Agent que se recibe en las cabeceras de la petición:
    Insertar CODE, HTML o PHP:
    SetEnvIfNoCase ^User-Agent$ .*(craftbot|download|extract|stripper|sucker|ninja|clshttp|webspider|leacher|collector|grabber|webpictures) HTTP_SAFE_BADBOT 
    SetEnvIfNoCase ^User-Agent$ .*(libwww-perl|aesop_com_spiderman) HTTP_SAFE_BADBOT
    Deny from env=HTTP_SAFE_BADBOT
Si conoces algún otro truco escribe un comentario y ayúdanos a mejorar este artículo.
 

lms

Administrador
Mensajes
7.718
Puntuación de reacciones
2.130
Puntos
2.613
Sitio web
xenfacil.com
País
España
Versión de XenForo
2.1.x
PayPal
Donar dinero a este usuario
Página web
Web
Visión General

Los archivos .htaccess, son archivos del tipo oculto (su punto a la izquierda lo indica) y nos permiten configurar localmente la mayoría de directivas que hay definidas en el archivo de configuración principal de apache y aplicar normas.

.htaccess es solo el nombre genérico del archivo, desde la directiva AccessFileName, se le podría dar otro nombre, y éste asumiría las mismas funciones y características (en algunos servidores lo llaman .config)

Los archivos .htaccess, actuan recursivamente desde la carpeta donde se hallan ubicados y hacia abajo de la misma. Si en alguna subcarpeta, por debajo de donde ya hay ubicado un archivo .htaccess, colocamos otro, éste último, aplicará igualmente sus directivas o normas desde esa subcarpeta donde se halla ubicado hasta más abajo.. y así, por cada archivo .htaccess que vayamos ubicando dentro de otros subdirectorios.

Por ejemplo, en nuestra carpeta raíz, podríamos tener un .htaccess que estuviera impidiendo, por medio de la directiva IndexIgnore *, la exploración de directorios, y, en la subcarpeta "descargas", podríamos tener ubicado otro .htaccess que lo permitiera parcialmente con un IndexIgnore *.php *.gif *.jpg. De este modo, desde la raíz hasta abajo, estariamos restringiendo la exploración de directorios, menos, en la carpeta "descargas" y sus subcarpetas, en las que solo imperdiriamos el listado de archivos con extensión php, gif o jpg.

La herencia de los archivos .htaccess es algo a tener muy en cuenta para evitarnos despropósitos; además, esto depende también de la herencia de sus directivas, si una directiva en particular, no dispone de tal cualidad, esa directiva en nuestro .htaccess carecerá de recursividad.

Las normas contenidas dentro de cada archivo .htaccess, se comprueban a cada solicitud de acceso que nos llegue; por lo tanto y en pro del rendimiento de nuestra web, la elaboración de este tipo de archivos y su estratégica ubicación, debería ser tan breve y a su vez efectiva como nos fuera posible.

Requisitos

Restricciones


Errores 500
Los errores internos del servidor, básicamente, suelen llegar o producirse por dos motivos:

* Errores de sintaxis
* Imposibilidad de llevar a cabo una solicitud

Los errores de sintaxis, pueden producirse por estar usando sintaxis correctas en versiones de apache no compatibles con esa sintaxis, o, por errores de tipeo.
Por ejemplo, para deshabilitar el Register_Globals, estas tres instrucciones serian corrrectas en sintaxis:
Insertar CODE, HTML o PHP:
php_flag Register_Globals = OFF 
php_flag Register_Globals = 0 
php_flag Register_Globals 0


Imposibilidad de llevar a cabo una solicitud, Por ejemplo, cuando dentro de un archivo .htaccess, estamos haciendo llamadas a módulos que no tenemos habilitados o activados, se producen errores internos del servidor, por no poder llevar a cabo la solicitud. Intentar reescribir URLs, por ejemplo, para prevenirnos de ataques via exploit, cuando el mod_rewrite no está habilitado para nuestro uso, termina en un internal server error. Cuando otro tipo de normas, requieren de su correspondiente módulo para funcionar, si éste no está habilitado, o no lo activamos primero, nos veremos en la misma situación. (mod_security, mod_evasive, etc)

Sugerencias

Ante este cúmulo de circunstancias a tener en cuenta, la mejor práctica, antes de proceder a habilitar nuestro archivo .htaccess, es, revisar los FAQ de quien sirve el hospedaje, o, ponerse en contacto con quien sirva el hospedaje y formularle un par de preguntas de este tipo:

"Oigan, ¿Tengo algún archivo .htaccess principal?
¿En que ruta se encuentra o como puedo acceder a él?
¿Puedo usar archivos .htaccess aunque sea con otro nombre de archivo?
¿Qué módulos tengo habilitados?
¿PHP se carga como módulo de apache o como CGI?
¿Con qué sintaxis, si pudiera, debo deshabilitar/habilitar algo, como por ejemplo, el register_globals?.
Gracias"

Con lo cual, nuestras principales dudas, ante acertadas respuestas por su parte, ya que son los que realmente saben como está todo configurado, nos aclararian el asunto o nos permitirian saber sobre nuestras posibilidades de interacción en gran medida.




Una vez renombrado el archivo a .htaccess, comprueba que tu sitio funciona correctamente y sin errores internos del servidor.

Si se producen errores internos del servidor, por haber renombrado el archivo a .htaccess, vuelve a renombrar el archivo a htaccess.txt y reintenta el acceso al sitio, para comprobar que el error ha desaparecido. Luego, busca el motivo por el cual se origina el error y mira de solucionarlo... para volver a intentarlo hacer funcionar todo con el archivo .htaccess habilitado.

Fuente: [url='http://foro.comunidadjoomla.org/viewtopic.php?f=38&t=37']¿Como habilitar archivos .htaccess? : Seguridad informática[/URL]
 

Juan Sin Miedo

XenForoUser
Mensajes
225
Puntuación de reacciones
15
Puntos
18
País
Perú
Página web
Web
Redicciones permanentes (301) de una página a otra dentro de un mismo servidor. Para ello añadir la siguiente línea:

#Redirect <codigo> <url_antigua> <nueva URL>
Redirect 301 /antiguo/index.html http://miDominio.com/nuevo/index.html

Entonces, en mi caso de contenido duplicado, para redirigir de la versión con www a la que no tiene www, ¿cuál seria el código exacto?
 

Juan Sin Miedo

XenForoUser
Mensajes
225
Puntuación de reacciones
15
Puntos
18
País
Perú
Página web
Web
También he hallado este código que no puedo aplicar de manera correcta:
Insertar CODE, HTML o PHP:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.(.*)$
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
 
Arriba