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?

¿Fue útil?

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?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top