.htaccess mod reescribir redireccionamiento 301
-
09-06-2019 - |
Pregunta
Deseo:todos los enlaces que no contienen un nombre de archivo (no .html, .jpg, .png, .css) redirigen con el estado 301 al directorio, por ejemplo: http://mysite.com/article -> http://mysite.com/article/Pero http://mysite.com/article/article-15.html no redirecciones.¿Qué expresión regulada debo escribir en .htaccess para agregar barra diagonal a directorios virtuales?
Solución
Creo que lo siguiente podría funcionar:
RewriteEngine on
RewriteCond %{REQUEST_URI} ^/[^\.]+[^/]$
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1/ [R=301,L]
Sin embargo, cuando se trata de mod_rewrite, nunca puedo estar seguro sin probarlo...
Otros consejos
Aclaración necesaria:
Dada la URL:http://servidor/ruta/archivo
¿Se redirige a:http://servidor/ruta/
¿O se redirige a:http://servidor/ruta/archivo/
Como en:¿Quiere que las redirecciones vayan a la ruta principal o simplemente desea agregar una barra y asumir que el directorio está fuera de la ruta actual?
La RewriteRule de MB anterior fallará en rutas como /a
porque debe coincidir con al menos dos caracteres después de la barra.Además, solo coincide con las URL del directorio superior.
RewriteRule ^(([^\/]+\/)*[^\/\.]+)$ http://%{HTTP_HOST}/$1/ [R=301,L]
¿El propósito de esto es reducir la contaminación histórica/falsos negativos?