= .htaccess * [[web:apache:htaccess:redirects]] == basics * mantén el fichero .htaccess tan pequeño como pueda ser * comenta y organiza correctamente el fichero .htaccess * añade la opción [L] a las páginas finales, para decirle al servidor que no procese más reglas - como en hotlinking * el fichero .htaccess tienen herencia en las carpetas, ojo con el fichero en el raiz * variables MOD_REWRITE: * [[https://www.askapache.com/htaccess/mod_rewrite-variables-cheatsheet/]] * [[https://httpd.apache.org/docs/2.4/expr.html]] == acceso directorios === control de acceso a carpetas * denegar acceso total a carpeta: deny from all * denegar acceso total, excepto determinada IP o rango: deny from all allow from x.x.x.x allow from y.y.y.y/x * denegar acceso a un archivo: order allow,deny deny from all === listado de carpetas * carpetas navegables: Options +Indexes +MultiViews +FollowSymlinks * más opciones para las carpetas navegables: IndexOptions FancyIndexing * prevenir el listado de carpetas:IndexIgnore * === negar petición niega cualquier conexión desde cualquier sitio deny from all === negar indices no muestra listado de ficheros Options -Indexes Indexignore * == varios === activar compresión * activar compresión de datos inherente a PHP: php_value zlib.output_compression 16386 === Escondiendo archivos * usando la directiva ''Files'' sobre el fichero a ocultar y:order allow,deny deny from all satisfy all === páginas de error 404 personalizadas * ErrorDocument 404 /errores/noencontrado.html * que la página tenga más de 512 bytes para evitar la "funcionalidad" de Internet Explorer de sustituir por una página propia las que pesan menos de eso == otros === cambiar el fichero que abre o busca por defecto Directoryindex index.php index2.php === esconder la extensión del lenguaje de scripting es necesario renombrar los ficheros a la nueva extensión # Make PHP code look like unknown types AddType application/x-httpd-php .cool == server side includes permite contenido dinámico dentro de páginas estáticas que se intepretan por el servidor [[http://httpd.apache.org/docs/2.2/howto/ssi.html]] para hacerlo sobre páginas con extensión .shtml (por no mezclar con las .html, aunque se puede y puede que sea más sencillo si tienes algo en marcha): Options +Includes AddType text/html .shtml AddOutputFilter INCLUDES .shtml AddHandler server-parsed .shtml # ? == protección directorio === basic debe estar habilitado el ''auth_basic.load'' en ''/etc/apache2/mods-enabled'' AuthName "Directorio privado" AuthType Basic AuthUserFile .htpasswd require valid-user * es necesario crear el fichero [[web:apache:htpasswd|.htpasswd]] con los usuarios/contraseñas * el fichero **.htpasswd** he de tener ruta absoluta o relativa al [[http://httpd.apache.org/docs/2.0/mod/core.html#serverroot|ServerRoot]] * se puede proteger un archivo, poniendo el código dentro de una directiva ''Files'' === Digest debe estar habilitado el ''auth_digest.load'' en ''/etc/apache2/mods-enabled''