Buenas Pepe seguimos si quieres por aquí o si no puedes unirlos:
Tuve que borrar todo lo puesto porque me di cuenta de que los artículos que modificaba no me guardaba los cambios a pesar de darme el Ok como que todo estaba correcto.
El caso es que: si pongo:
RewriteCond %{REQUEST_URI} /+[^\.]+$
RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L]
Me da error dice: Ha fallado la actualización. Probablemente estás desconectado.
Si añado lo que me dijiste de
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule (.*) https://opiniones-sobre.com/$1/ [L,R=301]
Me dice que todo OK, pero no me guarda nada, he perdido los cambios que hice ayer pensando que funcionaba, mal por mí por no comprobarlo.
Este es el código que tengo fuera del que me generan los plugins:
<FilesMatch ".(php4|php5|php3|php2|php|phtml)$">
SetHandler application/x-lsphp74
</FilesMatch>
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule (.*) https://opiniones-sobre.com/$1/ [L,R=301]
RewriteCond %{REQUEST_URI} /+[^\.]+$
RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L]
RewriteEngine On
RewriteRule ^(.*)/undefined?$ /$1 [L,NC,R=301]
RewriteEngine On
RewriteCond %{ENV:HTTPS} !on [NC]
RewriteCond %{QUERY_STRING} !wc-api [NC]
RewriteCond %{HTTP_HOST} ^opiniones\-sobre\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.opiniones\-sobre\.com$
RewriteCond %{REQUEST_URI} !^/\.well-known/acme-challenge/[0-9a-zA-Z_-]+$
RewriteCond %{REQUEST_URI} !^/\.well-known/cpanel-dcv/[0-9a-zA-Z_-]+$
RewriteCond %{REQUEST_URI} !^/\.well-known/pki-validation/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$
RewriteRule ^(.*)$ https://opiniones\-sobre\.com/$1 [R=301,L]
No sé si la última línea tendrá algo que ver.
Gracias!
Contenido solo visible a usuarios registrados
Hola Francisco.
Por favor adjunta una captura de de ajustes -> generales.
Revisa que las dos direcciones cargan con el protocolo https://
Un saludo
Sí, aquí lo tienes:
De hecho la web redirige cuando la pones sin https o con www a https://opiniones-sobre.com/
Hola Francisco.
Ok haz una prueba.
Accede a tu cuenta de cPanel -> Administrador de archivos.
.- Renombra el archivo htaccess ( no lo elimines solo lo renombras ) por ejemplo htaccess_old
.- Accede ajustes -> Enlaces permanentes y sin realizar ningún cambio pulsa en " Guardar Cambios "
.- Accede de nuevo a tu cuenta de cPanel -> Adminsitrador de archivos
.- Edita el archivo htaccess y añades solo este codigo:
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule (.*) https://opiniones-sobre.com/$1/ [L,R=301]
Revisa si todo carga bien, con eso descartamos si algún otro código que tienes en htaccess esta provocando eso fallos.
Un saludo
Hecho todo y todo correcto, puedo entrar a ver los articulos, modificarlos, se guardan bien, en principio todo correcto.
Cuando he ido a añadir el codigo un plugin ya me habia añadido codigo, y no me ha fallado:
Spoilercodigo# BEGIN WordPress
# Las directivas (líneas) entre «BEGIN WordPress» y «END WordPress» son
# generadas dinámicamente y solo deberían ser modificadas mediante filtros de WordPress.
# Cualquier cambio en las directivas que hay entre esos marcadores serán sobrescritas.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
# AMPFORWPLBROWSERCSTART Browser Caching
<IfModule mod_expires.c>
ExpiresActive On
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
ExpiresByType application/vnd.ms-fontobject "access 1 year"
ExpiresByType application/x-font-ttf "access 1 year"
ExpiresByType application/x-font-opentype "access 1 year"
ExpiresByType application/x-font-woff "access 1 year"
ExpiresByType image/svg+xml "access 1 year"
ExpiresByType image/webp "access 1 year"
ExpiresByType image/gif "access 1 year"
ExpiresByType image/jpg "access 1 year"
ExpiresByType image/jpeg "access 1 year"
ExpiresByType image/png "access 1 year"
ExpiresByType image/x-icon "access 1 year"
ExpiresByType text/css "access 3 month"
ExpiresByType text/javascript "access 3 month"
ExpiresByType application/javascript "access 3 month"
ExpiresByType application/x-javascript "access 3 month"
ExpiresByType application/xhtml-xml "access 3 month"
ExpiresByType application/pdf "access 3 month"
ExpiresByType application/x-shockwave-flash "access 3 month"
</IfModule>
# END Caching AMPFORWPLBROWSERCEND
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule (.*) https://opiniones-sobre.com/$1/ [L,R=301]
Hola Francisco,
Entiendo con esto que haz logrado solventar el problema?
Un Saludo
Hola @karen no.
No puedo simplemente quitar todo el código que tiene el .htaccess original.
Es código de plugins que ya me han avisado de que fallan.
Además de algunas redirecciones para que no haya contenido duplicado o que no se cargue sin https o con las www.
De hecho he tenido que volver a poner el anterior htaccess porque los plugins no me funcionaban correctamente:
Este es el codigo por si veis algo "raro":
# BEGIN WP Rocket v3.8.8
# Use UTF-8 encoding for anything served text/plain or text/html
AddDefaultCharset UTF-8
# Force UTF-8 for a number of file formats
<IfModule mod_mime.c>
AddCharset UTF-8 .atom .css .js .json .rss .vtt .xml
</IfModule>
# FileETag None is not enough for every server.
<IfModule mod_headers.c>
Header unset ETag
</IfModule>
# Since we’re sending far-future expires, we don’t need ETags for static content.
# developer.yahoo.com/performance/rules.html#etags
FileETag None
<IfModule mod_alias.c>
<FilesMatch "\.(html|htm|rtf|rtx|txt|xsd|xsl|xml)$">
<IfModule mod_headers.c>
Header set X-Powered-By "WP Rocket/3.8.8"
Header unset Pragma
Header append Cache-Control "public"
Header unset Last-Modified
</IfModule>
</FilesMatch>
<FilesMatch "\.(css|htc|js|asf|asx|wax|wmv|wmx|avi|bmp|class|divx|doc|docx|eot|exe|gif|gz|gzip|ico|jpg|jpeg|jpe|json|mdb|mid|midi|mov|qt|mp3|m4a|mp4|m4v|mpeg|mpg|mpe|mpp|otf|odb|odc|odf|odg|odp|ods|odt|ogg|pdf|png|pot|pps|ppt|pptx|ra|ram|svg|svgz|swf|tar|tif|tiff|ttf|ttc|wav|wma|wri|xla|xls|xlsx|xlt|xlw|zip)$">
<IfModule mod_headers.c>
Header unset Pragma
Header append Cache-Control "public"
</IfModule>
</FilesMatch>
</IfModule>
# Expires headers (for better cache control)
<IfModule mod_expires.c>
ExpiresActive on
ExpiresDefault "access plus 1 month"
# cache.appcache needs re-requests in FF 3.6 (thanks Remy ~Introducing HTML5)
ExpiresByType text/cache-manifest "access plus 0 seconds"
# Your document html
ExpiresByType text/html "access plus 0 seconds"
# Data
ExpiresByType text/xml "access plus 0 seconds"
ExpiresByType application/xml "access plus 0 seconds"
ExpiresByType application/json "access plus 0 seconds"
# Feed
ExpiresByType application/rss+xml "access plus 1 hour"
ExpiresByType application/atom+xml "access plus 1 hour"
# Favicon (cannot be renamed)
ExpiresByType image/x-icon "access plus 1 week"
# Media: images, video, audio
ExpiresByType image/gif "access plus 4 months"
ExpiresByType image/png "access plus 4 months"
ExpiresByType image/jpeg "access plus 4 months"
ExpiresByType image/webp "access plus 4 months"
ExpiresByType video/ogg "access plus 4 months"
ExpiresByType audio/ogg "access plus 4 months"
ExpiresByType video/mp4 "access plus 4 months"
ExpiresByType video/webm "access plus 4 months"
# HTC files (css3pie)
ExpiresByType text/x-component "access plus 1 month"
# Webfonts
ExpiresByType font/ttf "access plus 4 months"
ExpiresByType font/otf "access plus 4 months"
ExpiresByType font/woff "access plus 4 months"
ExpiresByType font/woff2 "access plus 4 months"
ExpiresByType image/svg+xml "access plus 1 month"
ExpiresByType application/vnd.ms-fontobject "access plus 1 month"
# CSS and JavaScript
ExpiresByType text/css "access plus 1 year"
ExpiresByType application/javascript "access plus 1 year"
</IfModule>
# Gzip compression
<IfModule mod_deflate.c>
# Active compression
SetOutputFilter DEFLATE
# Force deflate for mangled headers
<IfModule mod_setenvif.c>
<IfModule mod_headers.c>
SetEnvIfNoCase ^(Accept-EncodXng|X-cept-Encoding|X{15}|~{15}|-{15})$ ^((gzip|deflate)\s*,?\s*)+|[X~-]{4,13}$ HAVE_Accept-Encoding
RequestHeader append Accept-Encoding "gzip,deflate" env=HAVE_Accept-Encoding
# Don’t compress images and other uncompressible content
SetEnvIfNoCase Request_URI \
\.(?:gif|jpe?g|png|rar|zip|exe|flv|mov|wma|mp3|avi|swf|mp?g|mp4|webm|webp|pdf)$ no-gzip dont-vary
</IfModule>
</IfModule>
# Compress all output labeled with one of the following MIME-types
<IfModule mod_filter.c>
AddOutputFilterByType DEFLATE application/atom+xml \
application/javascript \
application/json \
application/rss+xml \
application/vnd.ms-fontobject \
application/x-font-ttf \
application/xhtml+xml \
application/xml \
font/opentype \
image/svg+xml \
image/x-icon \
text/css \
text/html \
text/plain \
text/x-component \
text/xml
</IfModule>
<IfModule mod_headers.c>
Header append Vary: Accept-Encoding
</IfModule>
</IfModule>
# END WP Rocket
# BEGIN Imagify: webp file type
<IfModule mod_mime.c>
AddType image/webp .webp
</IfModule>
# END Imagify: webp file type
<FilesMatch ".(php4|php5|php3|php2|php|phtml)$">
SetHandler application/x-lsphp74
</FilesMatch>
RewriteEngine On
RewriteRule ^(.*)/undefined?$ /$1 [L,NC,R=301]
RewriteEngine On
RewriteCond %{ENV:HTTPS} !on [NC]
RewriteCond %{QUERY_STRING} !wc-api [NC]
RewriteCond %{HTTP_HOST} ^opiniones\-sobre\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.opiniones\-sobre\.com$
RewriteCond %{REQUEST_URI} !^/\.well-known/acme-challenge/[0-9a-zA-Z_-]+$
RewriteCond %{REQUEST_URI} !^/\.well-known/cpanel-dcv/[0-9a-zA-Z_-]+$
RewriteCond %{REQUEST_URI} !^/\.well-known/pki-validation/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$
RewriteRule ^(.*)$ https://opiniones\-sobre\.com/$1 [R=301,L]
# BEGIN WordPress
# Las directivas (líneas) entre «BEGIN WordPress» y «END WordPress» son
# generadas dinámicamente y solo deberían ser modificadas mediante filtros de WordPress.
# Cualquier cambio en las directivas que hay entre esos marcadores serán sobrescritas.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
# AMPFORWPLBROWSERCSTART Browser Caching
<IfModule mod_expires.c>
ExpiresActive On
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
ExpiresByType application/vnd.ms-fontobject "access 1 year"
ExpiresByType application/x-font-ttf "access 1 year"
ExpiresByType application/x-font-opentype "access 1 year"
ExpiresByType application/x-font-woff "access 1 year"
ExpiresByType image/svg+xml "access 1 year"
ExpiresByType image/webp "access 1 year"
ExpiresByType image/gif "access 1 year"
ExpiresByType image/jpg "access 1 year"
ExpiresByType image/jpeg "access 1 year"
ExpiresByType image/png "access 1 year"
ExpiresByType image/x-icon "access 1 year"
ExpiresByType text/css "access 3 month"
ExpiresByType text/javascript "access 3 month"
ExpiresByType text/html "access 3 month"
ExpiresByType application/javascript "access 3 month"
ExpiresByType application/x-javascript "access 3 month"
ExpiresByType application/xhtml-xml "access 3 month"
ExpiresByType application/pdf "access 3 month"
ExpiresByType application/x-shockwave-flash "access 3 month"
ExpiresDefault "access 3 month"
</IfModule>
# END Caching AMPFORWPLBROWSERCEND
# BEGIN ShortPixelWebp
# Las directivas (líneas) entre «BEGIN ShortPixelWebp» y «END ShortPixelWebp» son
# generadas dinámicamente y solo deberían ser modificadas mediante filtros de WordPress.
# Cualquier cambio en las directivas que hay entre esos marcadores serán sobrescritas.
# END ShortPixelWebp
Hola
En tu plugin deberías tener una opción para agregarlas nuevamente, es decir la idea es que partes de un .htaccess base que te funcione todo.
Luego para el código de los plugins o bien puedes desintalar el plugin es instalarlo nuevamente o ir copiando el código manualmente al final del archivo hasta ver qué te genera el problema.
PD. Ten en cuenta que los códigos de redireccion deben ser lo primero que se ejecute por lo que debe estar al inicio del archivo.
Saludos.
Gracias @jmarreros
Entonces si te parece bien voy a hacer una cosa, añadir poco a poco el código para ver que todo funciona correctamente y voy probando poco a poco añadiendo cosas nuevas.
Una pregunta ¿Algún artículo para ver los códigos de las redirecciones?
O si directamente me podéis pasar el código que usáis vosotros para por ejemplo:
Redirigir de http a https
Redirigir de que lleve las www a que no las lleve.
Redirigir de las url que no acaban en / a que acaben en /.
Lo digo porque si me pasáis las que usáis vosotros así igual no se reproduce el fallo que tengo, prefiero empezar con "todo" vuestro código poco a poco.
Gracias!
Hola Francisco,
De acuerdo, ve probando poco a poco hasta verificar que todo funcione de forma correcta.
Puedes verificar el siguiente articulo donde mencionan los principales códigos utlies para htaccess -> https://www.webempresa.com/blog/codigos-utiles-htaccess-para-wordpress.html{
De igual forma puedes verificar el siguiente articulo -> https://www.webempresa.com/blog/8-modos-redirigir-url-wordpress.html#_6_Redirecciones_con_y_sin_/ donde mencionan
Comprueba esto y nos comenta, quedamos muy atentos como ha ido todo
Un Saludo
He seguido los pasos y el problema con wordpress me aparece cuando le meto el código de redireccion de URL sin / al final a que lleve la / al final de URL.
Tanto si pongo el código:
RewriteCond %{REQUEST_URI} /+[^\.]+$
RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L]
Como si pongo el de vuestro enlace:
<IfModule mod_rewrite.c>
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule (.*) http://www.ejemplo.com/$1/ [R=301,L,QSA]
</IfModule>
Me da error a la hora de guardar los artículos de WordPress.
El código que le meto de redireccionar de http a https y el de con www a sin www funcionan correctamente, incluso le he metido el de prevenir el hotlinking y todo va correcto
Aunque borre todo el codigo del htaccess wordpress y un plugin siempre me crea unas lineas nuevas, os lo adjunto por si veis algo que pudiese estar creando el conflicto:
<IfModule mod_rewrite.c>
RewriteCond %{HTTP_HOST} ^www.opiniones-sobre.com [NC]
RewriteRule (.*) http://opiniones-sobre.com/$1 [R=301,L,QSA]
</IfModule>
RewriteEngine On
RewriteCond %{ENV:HTTPS} !on [NC]
RewriteCond %{HTTP_HOST} ^opiniones-sobre.com$ [OR]
RewriteCond %{HTTP_HOST} ^www.opiniones-sobre.com$
RewriteRule ^(.*)$ https://opiniones-sobre.com/$1 [R=301,L,NE]
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^ http://(.+.)?opiniones-sobre.com/ [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteRule .*.(jpg|gif|bmp|png)$ [L]
# BEGIN WordPress
# Las directivas (líneas) entre «BEGIN WordPress» y «END WordPress» son
# generadas dinámicamente y solo deberían ser modificadas mediante filtros de WordPress.
# Cualquier cambio en las directivas que hay entre esos marcadores serán sobrescritas.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
# AMPFORWPLBROWSERCSTART Browser Caching
<IfModule mod_expires.c>
ExpiresActive On
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
ExpiresByType application/vnd.ms-fontobject "access 1 year"
ExpiresByType application/x-font-ttf "access 1 year"
ExpiresByType application/x-font-opentype "access 1 year"
ExpiresByType application/x-font-woff "access 1 year"
ExpiresByType image/svg+xml "access 1 year"
ExpiresByType image/webp "access 1 year"
ExpiresByType image/gif "access 1 year"
ExpiresByType image/jpg "access 1 year"
ExpiresByType image/jpeg "access 1 year"
ExpiresByType image/png "access 1 year"
ExpiresByType image/x-icon "access 1 year"
ExpiresByType text/css "access 3 month"
ExpiresByType text/javascript "access 3 month"
ExpiresByType application/javascript "access 3 month"
ExpiresByType application/x-javascript "access 3 month"
ExpiresByType application/xhtml-xml "access 3 month"
ExpiresByType application/pdf "access 3 month"
ExpiresByType application/x-shockwave-flash "access 3 month"
</IfModule>
# END Caching AMPFORWPLBROWSERCEND
Que raro que solo me pase a mi utilizando wordpress no?
Hola Francisco.
Supongo que modificaste la URL por la de tu dominio:
RewriteRule (.*) http://www. ejemplo.com/$1/ [R=301,L,QSA]
Para redirigir con la barra final
<IfModule mod_rewrite.c>
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*)/$ https://opiniones-sobre.com/$1 [R=301,L,QSA]
</IfModule>
Añádelo al principio del archivo htaccess.
Un saludo
Hola Pepe, sí lo modifiqué, el código que me dices:
<IfModule mod_rewrite.c>
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*)/$ https://opiniones-sobre.com/$1 [R=301,L,QSA]
</IfModule>
Me redirige de la url con barra a sin barra y eso me da errores en el wordpress.
Necesito redirigir de la ur sin la barra a que lleve la barra / al final.
Dandole vueltas he recordado lo del redireccionamiento de cpanel, le he echado un vistazo y hay esto:
La verdad es que no me queda muy claro que hace ese redireccionamiento..
¿Igual el error es por eso?
Gracias.
Vale, confirmado era eso 🤯
Parece que todo funciona correctamente.