que me gustaría utilizar mod reescribir en convertir direcciones de las páginas web como /directorio a /directory/index.html, en una situación lámpara estándar de alojamiento. Lo que tengo funciona para direcciones que terminan en una barra inclinada. No puedo encontrar una forma de manejar las direcciones que no terminan con una barra.RewriteEngine en .htaccess para coger los archivos no terminan en html
Lo que parece que debería funcionar es:
rewriterule ^(.*)/$ $1/index.html [L] /* addresses ending in/*/
rewriterule ^(.*(?!html))$ $1/index.html [L] /* where the problem is */
Pero la segunda línea hace que un error 500 de servidor. Si añado una sola letra x para la segunda línea:
rewriterule ^(.*)/$ $1/index.html [L]
rewriterule ^(.*x(?!html))$ $1/index.html [L]
Se empieza a funcionar, pero sólo para nombres de directorio que terminan en una x. He intentado reemplazar la x con muchas cosas diferentes. Cualquier cosa más complicada que los caracteres reales (como [^ x] o. +) Da un error de 500 servidores.
Y, para satisfacer mi propia curiosidad, ¿alguien sabe por qué la adición de una sola letra real hace la diferencia entre un error del servidor y una regla que funciona perfectamente?
[respuesta aceptada] Gracias a Gumbo que era capaz de aproximarse a una solución utilizando RewriteCond:
rewritecond %{REQUEST_URI} !\.[^/]+$ rewriterule (.+) $1/index.html [L]
Esto funciona, pero los filtros más que .html - que podría bloquear otras páginas. Por desgracia,
rewritecond %{REQUEST_URI} !\.html$
resulta en un error de servidor:
Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary.
todavía me gustaría saber por qué:
rewriterule ^(.*(?!html))$ $1/index.html [L]
resultados en un bucle. Se supone que la primera mitad verifique si no contiene final en .html. Desde la segunda mitad añade .html, parece que el equivalente funcional de:
while(substr($address,-4)!='html') $address.='html'
Obviamente me falta algo.
Sería más útil si pudiera nombrar el error del servidor. – Gumbo
¿No has leído mis notas de edición? La afirmación de mirar hacia adelante mira en la dirección incorrecta. – Gumbo