= .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''