Necesidad de eliminar la extensión de archivo .html y los nombres duplicados

Tengo un archivo .htaccess con el contenido a continuación, que elimina la extensión de archivo .html para todas las páginas de mi sitio web.

Options +MultiViews RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^([^\.]+)$ $1.html [NC,L] RewriteEngine On RewriteCond %{SERVER_PORT} !=443 RewriteCond %{HTTP_HOST} ^(www\.)?james-lee\.io$ [NC] RewriteRule ^$ https://www.james-lee.io%{REQUEST_URI} [R,L] 

Mis enlaces ahora parecen www.james-lee.io/resume/resume cuando antes se parecían a www.james-lee.io/resume/resume.html. Me gustaría eliminar el nombre de la carpeta para que el nombre de la carpeta no esté duplicado por el nombre del archivo menos el .html y el resultado final se vea como www.james-lee.io/resume.

He visto preguntas similares pero no exactamente lo que estoy buscando.

Así que he hecho esta tarea! Prueba este código:

 RewriteCond %{REQUEST_URI} ^/(.*)/(.*)$ RewriteCond %{DOCUMENT_ROOT}/%1 -d RewriteCond %{DOCUMENT_ROOT}/%1/%2 -f RewriteCond %1::%2 ^(.*)::\1$ RewriteRule ^(.*)$ /%1 [R,L] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^(.*)/(.*)$ /$1/$1 [END] 

Ahora trato de explicar estas reglas.

  1. Primera línea: usted solicita como / carpeta / archivo
  2. segunda línea: compruebe si / folder / carpeta existente real
  3. Tercera línea: compruebe si / folder / file es un archivo real existente
  4. Cuarta línea: uso la notación% 1 ::% 2 porque las referencias inversas solo se pueden usar en la parte izquierda de RewriteCond. Pero es posible reutilizar la parte izquierda en el patrón de la parte derecha. Entonces, en el “^ (. *) :: \ 1 $” reviso todo antes de ::. Entonces tengo el resultado en la referencia \ 1. Entonces, si la carpeta es igual a un archivo, el texto después de :: será igual a% 2.
  5. A continuación, simplemente redirigir al resultado (/ carpeta o / archivo, no importa, porque ambos son iguales)

Pero si carpeta == archivo, la redirección será siempre al directorio. Por lo tanto, a continuación verifico si el resultado de la redirección es dir y existe el cambio del enlace.

Ejemplo de solicitud: http: // sudominio / prueba / prueba

(esto será redirigido a http: // sudominio / prueba , pero hará referencia al enlace original)

Espero, lo explico claramente, pero si tiene alguna pregunta, me complacerá responder.

¡Gracias por esta tarea!

PS ver también % N de referencia en RewriteCond

ACTUALIZADO . Tu htaccess tiene que ser como abajo:

 RewriteEngine on RewriteCond %{SERVER_PORT} !=443 RewriteCond %{HTTP_HOST} ^(www\.)?james-lee\.io$ [NC] RewriteRule ^$ https://www.james-lee.io%{REQUEST_URI} [R,L] RewriteCond %{REQUEST_URI} ^/(.*)/(.*)$ RewriteCond %{DOCUMENT_ROOT}/%1 -d RewriteCond %{DOCUMENT_ROOT}/%1/%2\.html -f RewriteCond %1::%2 ^(.*)::\1$ RewriteRule ^(.*)$ /%1 [R,L] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^(.*)/(.*)$ /$1/$1.html [END] RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^([^\.]+)$ $1.html [NC,L]