ccc

Mostrando entradas con la etiqueta htaccess. Mostrar todas las entradas
Mostrando entradas con la etiqueta htaccess. Mostrar todas las entradas

htaccess: corregir error Access-Control-Allow-Origin

Si el navegador te bloquea las fuentes y te da el error: Access-Control-Allow-Origin

Hay que escribir esto en el htaccess:
<IfModule mod_headers.c>
  <FilesMatch "\.(ttf|ttc|otf|eot|woff|woff2|font.css|css|js)$">
    Header set Access-Control-Allow-Origin "*"
  </FilesMatch>
</IfModule>


Especial agradecimiento a Carlos Sierra García

htaccess: si se pasa un parámetro concreto no haga una redirección

Por ejemplo si como parámetro se pasa preview=true

RewriteCond %{QUERY_STRING} !preview=true
RewriteRule ^/?$ "https\:\/\/www\.midominio\.com\/landing\/" [R=301,L]

htaccess: varios

RewriteEngine On
RewriteBase /

Quitar la / del final de la URL:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ $1 [L,R=301]

Forzar de http a https
RewriteCond %{HTTP_HOST} !^wwwserver
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]

Redirigir de https://midominio.com a https://www.midominio.com:
RewriteCond %{HTTP_HOST} !^www
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

Borrar la extensión php de las urls:
RewriteCond %{HTTP_HOST} ^www\.midominio\.com
RewriteCond %{THE_REQUEST} ^GET\ /([^/]*)\.php\ HTTP
RewriteRule (.*)\.php$ https://www.midominio.com/$1 [R=301]

RewriteCond %{HTTP_HOST} ^midominio\.com
RewriteCond %{THE_REQUEST} ^GET\ /([^/]*)\.php\ HTTP
RewriteRule (.*)\.php$ https://www.midominio.com/$1 [R=301]

Que una regla no afecte a una carpeta en concreto (por ejemplo la de quitar .php)
RewriteCond %{HTTP_HOST} ^midominio\.com
RewriteCond %{THE_REQUEST} ^GET\ /([^/]*)\.php\ HTTP
RewriteCond %{REQUEST_URI} !/intranet/
RewriteRule (.*)\.php$ https://www.midominio.com/$1 [R=301]

Otra forma de quitar la extensión .php:
RewriteCond %{THE_REQUEST} \.php
RewriteRule ^(.*)\.php$ /$1 [R=301,L]

Que una redirección afecte solo si empieza por lo que se indica # esto no afectaría por ejemplo a www.midominio.com/imagenes/blog
# esto afectaría a: www.midominio.com/blog
RewriteRule ^blog https://otrodominio.com

Que redirija de una carpeta a otra
# ej: que de /blog/loquesea/pepe vaya a https://www.midominio.com/blog/Otracarpeta/pepe
Redirect 301 /blog/loquesea/(.*)$ https://www.midominio.com/blog/Otracarpeta/$1

Redirección 410 usando comodín: (que lo haga para todo lo que empiece por /media/cache/)
RedirectMatch gone /media/cache/.*

Hacer redirecciones 301 pero que no afecte a determinadas urls (añadir excepciones a la regla):
RewriteCond %{REQUEST_URI} !blog/abc [NC]
RewriteCond %{REQUEST_URI} !blog/def [NC]
RewriteRule blog/(.*)$ https://www.midominio.com/blog/$1 [NC,R=301,L]

Quitar las www del dominio:
Options +FollowSymlinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.midominio\.com [nc]
RewriteRule ^(.*)$ http://midomnio.com/$1 [r=301,nc]

htaccess: redirección 301

Redirect 301 /vieja-pagina http://www.example.com/nueva-pagina
RedirectMatch 301 /producto-xxx/ https://www.midominio.com/mayonesa-especial/
Más información en:
http://deteresa.com/redireccion-301/

htaccess: regla para sobreescribir directorio (sin que haga redirección)

Por ejemplo:

www.midominio.com/tienda/index.php

internamente está tirando de:

www.midominio.com/media/tienda/index.php

# Permite reescritura de los directorios
Options +FollowSymLinks

# Abilita el módulo de Reescritura
RewriteEngine on

RewriteRule ^tienda/(.*)$ media/tienda/$1 [QSA,NC,L]

htaccess: Redirección si nada detrás

RewriteRule /en/$ https://www.midominio.com/ [R=301]

la $ indica que la cadena termina ahí, es decir, solo afectará a:
/en/

y por ejemplo no afectará a:
/en/loquesea

htaccess: Hacer que los links a los PDF sean noindex, follow

#Que los PDF que enlace desde la web sea noindex, follow
<Files ~ "\.pdf$">
Header set X-Robots-Tag "noindex, follow"
</Files>

Si quisieramos simplemente que ni lo indexe ni lo siga entonces es mucho más fácil hacerlo directamente en el robots.txt:
Disallow: *.pdf$

htaccess: forzar https

# Forzar https
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]


Si el htaccess (a pesar de ser Apache) no funciona es posible que esté desactivado o deshabilitado para que funcione hay que habilitar en el servidor la directiva:
AllowOverride All
Si es un servidor que no tiene Apache entonces hay que modificar el fichero web.config: <configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <clear />
                <rule name="Redirect to https" stopProcessing="true">
                    <match url=".*" />
                    <conditions>
                        <add input="{HTTPS}" pattern="off" ignoreCase="true" />
                    </conditions>
                    <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="Permanent" appendQueryString="false" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

Comprimir recursos con gzip

<IfModule mod_deflate.c>
  # Comprimir HTML, CSS, JavaScript, Text, XML y fonts
  AddOutputFilterByType DEFLATE application/javascript
  AddOutputFilterByType DEFLATE application/rss+xml
  AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
  AddOutputFilterByType DEFLATE application/x-font
  AddOutputFilterByType DEFLATE application/x-font-opentype
  AddOutputFilterByType DEFLATE application/x-font-otf
  AddOutputFilterByType DEFLATE application/x-font-truetype
  AddOutputFilterByType DEFLATE application/x-font-ttf
  AddOutputFilterByType DEFLATE application/x-javascript
  AddOutputFilterByType DEFLATE application/xhtml+xml
  AddOutputFilterByType DEFLATE application/xml
  AddOutputFilterByType DEFLATE font/opentype
  AddOutputFilterByType DEFLATE font/otf
  AddOutputFilterByType DEFLATE font/ttf
  AddOutputFilterByType DEFLATE image/svg+xml
  AddOutputFilterByType DEFLATE image/x-icon
  AddOutputFilterByType DEFLATE text/css
  AddOutputFilterByType DEFLATE text/html
  AddOutputFilterByType DEFLATE text/javascript
  AddOutputFilterByType DEFLATE text/plain
  AddOutputFilterByType DEFLATE text/xml

  # Eliminar browser bugs (necesario en caso de navegadores realmente antiguos)
  BrowserMatch ^Mozilla/4 gzip-only-text/html
  BrowserMatch ^Mozilla/4\.0[678] no-gzip
  BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
  Header append Vary User-Agent
</IfModule>

<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>

Más información en https://www.windowslinuxymac.com/seo/118-como-comprimir-una-web-con-gzip-o-deflate-mediante-htacces.html

htaccess: redirección 410

# www.midominio.com/loquesea
Redirect gone /loquesea/
# Aplicar redirección a todos los que contengan en la url /twitter_url/
RedirectMatch 410 /twitter_url/

htaccess: poner fecha de expiración a las imágenes, css, js

<ifmodule mod_expires.c>
 ExpiresActive On
 ExpiresDefault A3600
 <filesmatch ".(jpg|JPG|gif|GIF|png|css|ico|js)$">
  ExpiresDefault "Expira en 7"
 </filesmatch>
</ifmodule>
También se puede poner así:
<ifmodule mod_expires.c>
    ExpiresActive On
  ExpiresDefault "access plus 1 seconds"
  ExpiresByType text/html "access plus 1 seconds"
  ExpiresByType image/x-icon "access plus 2592000 seconds"
  ExpiresByType image/gif "access plus 2592000 seconds"
  ExpiresByType image/jpeg "access plus 2592000 seconds"
  ExpiresByType image/png "access plus 2592000 seconds"
  ExpiresByType text/css "access plus 604800 seconds"
  ExpiresByType text/javascript "access plus 86400 seconds"
  ExpiresByType application/x-javascript "access plus 86400 seconds"
    </ifmodule>
Para que te haga caso las indicaciones anteriores:
# Cache One year for image files
<filesMatch ".(jpg|jpeg|png|gif|ico|swf)$">
Header set Cache-Control "max-age=31536000, public"
</filesMatch>
# Cache One month for css and js
<filesMatch ".(css|js)$">
Header set Cache-Control "max-age=2628000, public"
</filesMatch>


En el caso de los tipos de letras (woff y demás) hay que hacer antes arribe del todo:
AddType application/vnd.ms-fontobject .eot 
AddType application/x-font-ttf .ttf
AddType application/x-font-opentype .otf
AddType application/x-font-woff .woff
AddType image/svg+xml .svg

Y luego en el <ifmodule mod_expires.c poner:
...
ExpiresByType application/vnd.ms-fontobject "access plus 1 month"
ExpiresByType application/x-font-ttf "access plus 1 month"
ExpiresByType application/x-font-opentype "access plus 1 month"
ExpiresByType application/x-font-woff "access plus 1 month"
ExpiresByType image/svg+xml "access plus 1 month"

 O si quieres distintos tiempos según el tipo de archivo :
<ifmodule mod_expires.c>
 ExpiresActive On
 ExpiresDefault A3600
 <FilesMatch ".(gif|jpg|jpeg|png|ico|swf)$">
 # 2 semanas
 ExpiresDefault A604800
 Header append Cache-Control "public"
 </FilesMatch>
 <FilesMatch ".(xml|txt|html)$">
 # 2 h
 ExpiresDefault A604800
 Header append Cache-Control "public"
 </FilesMatch>
 <FilesMatch ".(js|css)$">
 # 3 dias
 ExpiresDefault A604800
 Header append Cache-Control "public"
 </FilesMatch>
</ifmodule>

htaccess: Que una regla no afecte a una subcarpeta

# que esta regla solo afecte a ficheros php y que NO afecte a los ficheros de la intranet
RewriteCond %{THE_REQUEST} \.php
RewriteCond %{REQUEST_URI} !/intranet/
RewriteRule ^(.*)\.php$ $1?i=%{REQUEST_URI} [R=301,L]

htaccess: Forzar redirección de fichero con extensión PHP a sin extensión

Por ejemplo: proyecto.php redirecciona a proyecto
Además que esta regla solo afecte a ficheros php y que NO afecte a los ficheros de la carpeta codigo

RewriteCond %{THE_REQUEST} \.php
RewriteCond %{REQUEST_URI} !^/codigo/
RewriteRule ^(.*)\.php$ /$1 [R=301,L]

htaccess: que las www redirija a sin www

htaccess: que las www redirija a sin www
(por ejemplo:
www.prueba.com a prueba.com)

RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

htaccess: Forzar que al poner el nombre fichero sin extensión php se redirija al correspondiente PHP

# Forzar que al poner el nombre fichero sin extensión php se redirija al correspondiente PHP
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^([^/]*)/?$ $1.php


Por ejemplo

www.midominio.com/proyectos ejecute internamente www.midominio.com/proyectos.php

Excel: Hacer automáticas redirecciones de htaccess

En una nueva columna del Excel:
="RedirectMatch 301 "&A1&" "&B1&""

Y luego tirar para abajo para que se aplique la fórmula a todas las demás filas