El archivo de configuración de Apache .htaccess es un punto difícil e importante. Nunca me he decidido a aprenderlo con atención. Siempre pensé que el método Redirect pertenece a mod_rewrite y me siento confundido al usarlo. Hoy encontré un muy buen tutorial y, mientras lo aprendía, escribí algunas ideas.
actualizado: corrija continuamente algunos problemas menores
Fuente: Guía completa de .htaccess
Referencia oficial: Referencia rápida de directivas
1 Introducción Introducción
Nombre de archivo.htaccess atributo 644 (RW-R–R–)
htaccess afectará a todos los subdirectorios en el directorio donde se encuentra. Tenga en cuenta que la mayor parte del contenido debe mantenerse dentro de una línea y no ajustarse. De lo contrario, se producirá un error.
2 Documentos de error Documentos de error
Documento oficial: Directiva ErrorDocument
Documento de código de documento de error
ejemplo
Documento de error 400 /errors/badrequest.html
Documento de error 404 http://yoursite/errors/notfound.html
ErrorDocument 401 "Se requiere autorización"
(Tenga en cuenta que las comillas dobles que aparecen más adelante en el contenido deben tener como carácter de escape ")
Códigos de estado HTTP comunes
Solicitudes de clientes exitosas
200 bien
201 creado
202 Aceptado
203 Información no autorizada
204 Sin contenido
205 Restablecer contenido
206 Contenido parcial
Solicitud de cliente redirigida
300 opciones múltiples
301 movido permanentemente
302 movido temporalmente
303 Ver Otros
304 No modificado
305 Usar proxy
Errores de solicitud del cliente
400 Solicitud incorrecta
Autorización 401 requerida
402 Pago requerido (aún no utilizado)
403 Prohibido
404 no encontrado
Método 405 no permitido
406 No aceptable (codificación)
Se requiere autenticación de proxy 407
Solicitud 408 agotada
409 Solicitud conflictiva
410 desaparecido
411 Longitud del contenido requerida
412 Condición previa fallida
413 Solicitar entidad demasiado larga
414 Solicitud URI demasiado larga
415 Tipo de medio no admitido
Errores del servidor
500 Error interno del servidor
501 no implementado
502 Puerta de enlace no válida
Servicio 503 no disponible
504 Tiempo de espera de puerta de enlace
Versión HTTP 505 no compatible
3 Protección con contraseña Protección con contraseña
Documento oficial: Autenticación, Autorización y Control de Acceso
Supongamos que el archivo de contraseña es .htpasswd
AuthUserFile /usr/local/safedir/.htpasswd (aquí se debe utilizar el nombre de ruta completo)
Nombre de autenticación Ingrese la contraseña
Tipo de autenticación básico
Dos métodos de verificación comunes:
Requerir usuariowindix
(Solo el usuario windix puede iniciar sesión)
Requerir usuario válido
(Todos los usuarios legales pueden iniciar sesión)
Consejo: Cómo generar un archivo de contraseña usando el comando htpasswd (incluido con Apache)
Es necesario crear un archivo de contraseña para la primera generación.
htpasswd -c .htpasswd usuario1
Agregar nuevos usuarios más tarde
htpasswd .htpasswd usuario2
4 Habilitación de SSI a través de htaccess Permitir la función SSI (incluido el lado del servidor) a través de htaccess
Agregar tipo texto/html .shtml
AddHandler .shtml analizado por el servidor
Opciones Índices FollowSymLinks Incluye
DirectorioIndex index.shtml index.html
5 Bloqueo de usuarios por IP Bloqueo de acceso de usuarios según IP
orden permitir, negar
negar desde 123.45.6.7
denegar desde 12.34.5 (dirección de clase C completa)
permitir de todos
6 Bloqueo de usuarios/sitios por referencia Bloqueo de usuarios/sitios según referencia
Requiere el módulo mod_rewrite
Ejemplo 1. Bloquear un único referente: badsite.com
Reescribir motor en
# Opciones +SeguirEnlaces simbólicos
RewriteCond %{HTTP_REFERER} badsite.com [NC]
Reescribir regla.* - [F]
Ejemplo 2. Bloquear múltiples referentes: badsite1.com, badsite2.com
Reescribir motor en
# Opciones +SeguirEnlaces simbólicos
RewriteCond %{HTTP_REFERER} badsite1.com [NC,O]
RewriteCond %{HTTP_REFERER} badsite2.com
Reescribir regla.* - [F]
[NC] - No distingue entre mayúsculas y minúsculas
[F] - 403 Prohibido
Tenga en cuenta que la declaración "Opciones +FollowSymlinks" está comentada en el código anterior. Si el servidor no configura FollowSymLinks en la sección httpd.conf, debe agregar esta oración; de lo contrario, obtendrá el error "500 Error interno del servidor".
7 Bloqueo de bots malos y navegadores sin conexión (también conocidos como navegadores sin conexión) Bloqueo de bots malos y navegadores sin conexión
Requiere el módulo mod_rewrite
¿Rastreadores malos? Por ejemplo, algunos rastreadores que capturan direcciones de correo electrónico no deseado y rastreadores que no cumplen con robots.txt (¿como baidu?)
Se pueden juzgar según HTTP_USER_AGENT
(Pero hay incluso más descarados como "Zhongsou zhongsou.com" que configuran su propio agente en "Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)". Son demasiado corruptos y no pueden hacer nada.)
Reescribir motor activado
RewriteCond %{HTTP_USER_AGENT} ^BlackWidow [O]
RewriteCond %{HTTP_USER_AGENT} ^Bot mailto:[email protected] [O]
RewriteCond %{HTTP_USER_AGENT} ^ChinaClaw [O]
RewriteCond %{HTTP_USER_AGENT} ^Custo [O]
RewriteCond %{HTTP_USER_AGENT} ^DISCo [O]
RewriteCond %{HTTP_USER_AGENT} ^Descargar Demon [O]
RewriteCond %{HTTP_USER_AGENT} ^eCatch [O]
RewriteCond %{HTTP_USER_AGENT} ^EirGrabber [O]
RewriteCond %{HTTP_USER_AGENT} ^EmailSiphon [O]
RewriteCond %{HTTP_USER_AGENT} ^EmailWolf [O]
RewriteCond %{HTTP_USER_AGENT} ^Express WebPictures [O]
RewriteCond %{HTTP_USER_AGENT} ^ExtractorPro [O]
RewriteCond %{HTTP_USER_AGENT} ^EyeNetIE [O]
RewriteCond %{HTTP_USER_AGENT} ^FlashGet [O]
RewriteCond %{HTTP_USER_AGENT} ^GetRight [O]
RewriteCond %{HTTP_USER_AGENT} ^GetWeb [O]
RewriteCond %{HTTP_USER_AGENT} ^Go!Zilla [O]
RewriteCond %{HTTP_USER_AGENT} ^Adelante, lo tengo [O]
RewriteCond %{HTTP_USER_AGENT} ^GrabNet [O]
RewriteCond %{HTTP_USER_AGENT} ^Grafula [O]
RewriteCond %{HTTP_USER_AGENT} ^HMView [O]
RewriteCond %{HTTP_USER_AGENT} HTTrack [NC,O]
RewriteCond %{HTTP_USER_AGENT} ^Imagen Stripper [O]
RewriteCond %{HTTP_USER_AGENT} ^Imagen Sucker [O]
RewriteCond %{HTTP_USER_AGENT} Indy Biblioteca [NC,O]
RewriteCond %{HTTP_USER_AGENT} ^InterGET [O]
RewriteCond %{HTTP_USER_AGENT} ^Internet Ninja [O]
RewriteCond %{HTTP_USER_AGENT} ^JetCar [O]
RewriteCond %{HTTP_USER_AGENT} ^JOC Web Spider [O]
RewriteCond %{HTTP_USER_AGENT} ^larbin [O]
RewriteCond %{HTTP_USER_AGENT} ^LeechFTP [O]
RewriteCond %{HTTP_USER_AGENT} ^Mass Descargador [O]
RewriteCond %{HTTP_USER_AGENT} ^MIDown herramienta [O]
RewriteCond %{HTTP_USER_AGENT} ^Señor PiX [O]
RewriteCond %{HTTP_USER_AGENT} ^Navroad [O]
RewriteCond %{HTTP_USER_AGENT} ^NearSite [O]
RewriteCond %{HTTP_USER_AGENT} ^NetAnts [O]
RewriteCond %{HTTP_USER_AGENT} ^NetSpider [O]
RewriteCond %{HTTP_USER_AGENT} ^Net Vampiro [O]
RewriteCond %{HTTP_USER_AGENT} ^NetZIP [O]
RewriteCond %{HTTP_USER_AGENT} ^Octopus [O]
RewriteCond %{HTTP_USER_AGENT} ^Sin conexión Explorer [O]
RewriteCond %{HTTP_USER_AGENT} ^Sin conexión Navegador [O]
RewriteCond %{HTTP_USER_AGENT} ^PageGrabber [O]
RewriteCond %{HTTP_USER_AGENT} ^Papa Foto [O]
RewriteCond %{HTTP_USER_AGENT} ^pavuk [O]
RewriteCond %{HTTP_USER_AGENT} ^pcBrowser [O]
RewriteCond %{HTTP_USER_AGENT} ^RealDownload [O]
RewriteCond %{HTTP_USER_AGENT} ^ReGet [O]
RewriteCond %{HTTP_USER_AGENT} ^SiteSnagger [O]
RewriteCond %{HTTP_USER_AGENT} ^SmartDownload [O]
RewriteCond %{HTTP_USER_AGENT} ^SuperBot [O]
RewriteCond %{HTTP_USER_AGENT} ^SuperHTTP [O]
ReescribirCond %{HTTP_USER_AGENT} ^Surfbot [O]
RewriteCond %{HTTP_USER_AGENT} ^tAkeOut [O]
RewriteCond %{HTTP_USER_AGENT} ^Teleport Pro [O]
RewriteCond %{HTTP_USER_AGENT} ^VoidEYE [O]
RewriteCond %{HTTP_USER_AGENT} ^Web Image Collector [O]
RewriteCond %{HTTP_USER_AGENT} ^Web Sucker [O]
RewriteCond %{HTTP_USER_AGENT} ^WebAuto [O]
RewriteCond %{HTTP_USER_AGENT} ^WebCopier [O]
RewriteCond %{HTTP_USER_AGENT} ^WebFetch [O]
RewriteCond %{HTTP_USER_AGENT} ^WebGo ES [O]
RewriteCond %{HTTP_USER_AGENT} ^WebLeacher [O]
RewriteCond %{HTTP_USER_AGENT} ^WebReaper [O]
RewriteCond %{HTTP_USER_AGENT} ^WebSauger [O]
RewriteCond %{HTTP_USER_AGENT} ^Sitio web eXtractor [O]
RewriteCond %{HTTP_USER_AGENT} ^Sitio web Quester [O]
RewriteCond %{HTTP_USER_AGENT} ^WebStripper [O]
RewriteCond %{HTTP_USER_AGENT} ^WebWhacker [O]
RewriteCond %{HTTP_USER_AGENT} ^WebZIP [O]
RewriteCond %{HTTP_USER_AGENT} ^Wget [O]
RewriteCond %{HTTP_USER_AGENT} ^Viuda [O]
RewriteCond %{HTTP_USER_AGENT} ^WWWOFFLE [O]
RewriteCond %{HTTP_USER_AGENT} ^Xaldon WebSpider [O]
ReescribirCond %{HTTP_USER_AGENT} ^Zeus
Reescribir regla ^.* - [F,L]
[F] - 403 Prohibido
[L] - ?
8 Cambie su página de directorio predeterminada Cambie su página de directorio predeterminada
DirectorioIndex index.html index.php index.cgi index.pl
9 redirecciones
Archivo único
Redirigir /old_dir/old_file.html http://yoursite.com/new_dir/new_file.html
directorio completo
Redirigir /old_dir http://yoursite.com/new_dir
Efecto: Igual que mover el directorio
http://yoursite.com/old_dir -> http://yoursite.com/new_dir
http://yoursite.com/old_dir/dir1/test.html -> http://yoursite.com/new_dir/dir1/test.html
Consejo: Solución al problema de que Redirect no puede redirigir cuando se utiliza el directorio de usuarios
Cuando utiliza el directorio de usuario predeterminado de Apache, como http://mysite.com/~windix, y cuando desea redirigir a http://mysite.com/~windix/jump, encontrará que el siguiente redireccionamiento no trabajar:
Redirigir/saltar http://www.google.com
La forma correcta es cambiarlo a
Redirigir /~windix/jump http://www.google.com
(fuente: .htaccess Redirect en “Sitios” no redirecciona: ¿por qué?)
10 Impedir la visualización del archivo .htaccess Impedir la visualización del archivo .htaccess
orden permitir, negar
negar de todos
11 Agregar tipos MIME Agregar tipos MIME
Aplicación AddType/x-shockwave-flash swf
Sugerencias: configurar el tipo en aplicación/octeto-stream le solicitará que descargue
12 Prevención de enlaces activos de imágenes y otros tipos de archivos Anti-vínculos activos
Requiere el módulo mod_rewrite
Reescribir motor en
ReescribirCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www/.)?midominio.com/.*$ [NC]
Reescribir regla .(gif|jpg|js|css)$ - [F]
Análisis:
Si HTTP_REFERER no está vacío (la fuente son otros sitios, no conectados directamente) y si HTTP_REFERER no comienza con (www.)midominio.com (ignore mayúsculas y minúsculas [NC]) (la fuente no es este sitio)
Da el error 403 Prohibido [F] para todos los archivos que terminan en .gif/.jpg/.js/.css
También puede especificar una respuesta, ya que el siguiente ejemplo muestra una imagen de reemplazo.
Reescribir regla .(gif|jpg)$ [R,L]
[R] - Redirigir
[L] - Enlace
13 Impedir que se muestre el listado de directorios Impedir que se muestre el listado de directorios
ÍndiceIgnorar*
ÍndiceIgnorar *.jpg *.gif
Consejos:
Permitir visualización del listado de directorios: Opciones +Índices
Deshabilitar la visualización de la lista de sacerdotes: Opciones -Índices
Mostrar información de solicitud: archivo de encabezado HEADER, archivo de pie de página README