El .htaccess
es un archivo de configuración distribuido y es la forma en que Apache maneja los cambios de configuración por directorio.
WordPress usa este archivo para manipular cómo Apache sirve los archivos desde tu directorio raíz y tus subdirectorios. En particular, WP modifica este archivo para poder manejar enlaces permanentes bonitos.
Esta página se puede utilizar para restaurar un archivo .htaccess
dañado (por ejemplo, un plugin que no funciona correctamente).
WP básico
# BEGIN WordPress RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] # END WordPress
Multisitio
WordPress 3.5 y mayor
Si activaste Multisite en WordPress 3.5 o posterior, usa uno de estos.
Ejemplo en una subcarpeta
RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] # add a trailing slash to /wp-admin RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L] RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^ - [L] RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L] RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L] RewriteRule . index.php [L]
Ejemplo en un subdominio
RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] # add a trailing slash to /wp-admin RewriteRule ^wp-admin$ wp-admin/ [R=301,L] RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^ - [L] RewriteRule ^(wp-(content|admin|includes).*) $1 [L] RewriteRule ^(.*\.php)$ $1 [L] RewriteRule . index.php [L]
WordPress 3.4 y menor
Si instalaste originalmente WordPress con 3.4 o anterior y activaste Multisite entonces, necesitas usar uno de estos:
Ejemplo en una subcarpeta
WordPress 3.0 a 3.4.2
# BEGIN WordPress RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] # uploaded files RewriteRule ^([_0-9a-zA-Z-]+/)?files/(.+) wp-includes/ms-files.php?file=$2 [L] # add a trailing slash to /wp-admin RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L] RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^ - [L] RewriteRule ^[_0-9a-zA-Z-]+/(wp-(content|admin|includes).*) $1 [L] RewriteRule ^[_0-9a-zA-Z-]+/(.*\.php)$ $1 [L] RewriteRule . index.php [L] # END WordPress
Ejemplo en un subdominio
# BEGIN WordPress RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] # uploaded files RewriteRule ^files/(.+) wp-includes/ms-files.php?file=$1 [L] RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^ - [L] RewriteRule . index.php [L] # END WordPress
Ejemplos generales
Opciones
Las opciones precedidas por un +
se agregan a las opciones actualmente vigentes, y las opciones precedidas por un -
se eliminan de las opciones actualmente vigentes.
Los valores posibles para la directiva Opciones son cualquier combinación de:
None
Todas las opciones están desactivadas.
All
Todas las opciones excepto MultiViews. Ésta es la configuración predeterminada.
ExecCGI
Se permite la ejecución de scripts CGI usando mod_cgi.
FollowSymLinks
El servidor seguirá enlaces simbólicos en este directorio.
Includes
Se permiten las inclusiones del lado del servidor proporcionadas por mod_include.
IncludesNOEXEC
Se permiten inclusiones del lado del servidor, pero el #exec cmd y #exec cgi están deshabilitados.
Indexes
La URL se asigna a un directorio, y no DirectoryIndex, una lista formateada del directorio.
MultiViews
El contenido negociado “MultiViews” se permite mediante mod_negotiation.
SymLinksIfOwnerMatch
Solo sigue los enlaces simbólicos donde el objetivo sea propiedad del mismo ID de usuario que el enlace.
Esto deshabilitará todas las opciones y luego solo habilitará FollowSymLinks, que es necesario para mod_rewrite.
Options None Options FollowSymLinks
DirectoryIndex
DirectoryIndex establece el archivo que servirá Apache si se solicita un directorio.
Se pueden proporcionar varias URL, en cuyo caso el servidor devolverá la primera que encuentre.
DirectoryIndex index.php index.html /index.php
DefaultLanguage
DefaultLanguage hará que todos los archivos que aún no tengan una etiqueta de idioma específica asociada lo usen.
DefaultLanguage en
Default Charset
Establece la codificación de caracteres predeterminada enviada en el encabezado HTTP. Ver: Configuración de la información del juego de caracteres en .htaccess
AddDefaultCharset UTF-8
Establecer juego de caracteres para archivos específicos
AddType 'text/html; charset=UTF-8' .html
Establecer para archivos específicos
AddCharset UTF-8 .html
ServerSignature
La directiva ServerSignature permite la configuración de una línea de pie de página al final de los documentos generados por el servidor. Opcionalmente, agrega una línea que contenga la versión del servidor y el nombre del host virtual a las páginas generadas por el servidor (documentos de error interno, listados de directorios FTP, salida mod_status y mod_info, etc., pero no documentos generados por CGI o documentos de error personalizados).
On
agrega una línea con el número de versión del servidor y ServerName del servidor virtual de servicio
Off
suprime la línea del pie de página
crea una referencia “mailto:” al ServerAdmin del documento de referencia
SetEnv SERVER_ADMIN admin@site.com ServerSignature Email
Forzar la descarga de archivos
Lo siguiente hará que las solicitudes de archivos que terminen en las extensiones especificadas no se muestren en el navegador, sino que forzará un cuadro de diálogo “Guardar como” para que el cliente pueda descargarlo.
AddType application/octet-stream .avi .mpg .mov .pdf .xls .mp4
Compresión HTTP
La directiva AddOutputFilter asigna la extensión de la extensión del nombre de archivo a los filtros que procesarán las respuestas del servidor antes de enviarlas al cliente. Esto se suma a los filtros definidos en otros lugares, incluidos SetOutputFilter y AddOutputFilterByType. Este mapeo se fusiona con cualquiera que ya esté en vigor, anulando cualquier mapeo que ya exista para la misma extensión.
Consulta también: https://developers.google.com/speed/docs/insights/EnableCompression
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/javascript text/css application/x-javascript BrowserMatch ^Mozilla/4 gzip-only-text/html BrowserMatch ^Mozilla/4\.0[678] no-gzip BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
Forzar compresión para ciertos archivos
SetOutputFilter DEFLATE
Enviar encabezados HTTP personalizados
La directiva Header te permite enviar encabezados HTTP para cada solicitud, o solo archivos específicos. Puedes ver los encabezados HTTP de un sitio utilizando Firebug, Chrome Dev Tools, Wireshark o una herramienta en línea.
Header set X-Pingback "http://www.askapache.com/xmlrpc.php" Header set Content-Language "en-US"
Encabezados HTTP sin establecer
Esto desarmará los encabezados HTTP, usando always hará un esfuerzo adicional para eliminarlos.
Header unset Pragma Header always unset WP-Super-Cache Header always unset X-Pingback
Acceso protegido con contraseña
Esto es muy útil para proteger el archivo wp-login.php. Puede utilizar este generador htpasswd.
Autenticación básica
AuthType Basic AuthName "Password Protected" AuthUserFile /full/path/to/.htpasswd Require valid-user Satisfy All
Autenticación implícita
AuthType Digest AuthName "Password Protected" AuthDigestDomain /wp-login.php https://www.askapache.com/wp-login.php AuthUserFile /full/path/to/.htpasswd Require valid-user Satisfy All
Requerir IP específica
Esta es una forma de permitir el acceso únicamente a determinadas direcciones IP.
ErrorDocument 401 default ErrorDocument 403 default Order deny,allow Deny from all Allow from 198.101.159.98 localhost
Protege los archivos confidenciales
Esto niega todo acceso web a tu archivo wp-config, error_logs, php.ini y htaccess/htpasswds.
Order deny,allow Deny from all
Requerir SSL
Esto forzará SSL y requerirá el nombre de host exacto o, de lo contrario, redirigirá a la versión SSL. Útil en un archivo /wp-admin/.htaccess
.
SSLOptions +StrictRequire SSLRequireSSL SSLRequire %{HTTP_HOST} eq "www.wordpress.com" ErrorDocument 403 https://www.wordpress.com
Recursos externos
- Official Apache HTTP Server Tutorial: .htaccess files
- Official Htaccess Directive Quick Reference
- Htaccess Tutorial
- Google PageSpeed for Developers
- Stupid Htaccess Tricks
- Advanced Mod_Rewrite
Comentarios recientes