Foros del Web » Administración de Sistemas » Apache »

Quitar extensión .php ó .html y redireccionar 301 urls anteriores

Estas en el tema de Quitar extensión .php ó .html y redireccionar 301 urls anteriores en el foro de Apache en Foros del Web. Hola, Quiero eliminar las extensiones .html ó .php de todas las urls de mi sitio. He introducido en .htaccess el siguiente código : Código: Options ...
  #1 (permalink)  
Antiguo 25/09/2017, 03:30
 
Fecha de Ingreso: septiembre-2004
Ubicación: Andorra
Mensajes: 130
Antigüedad: 13 años, 3 meses
Puntos: 0
Quitar extensión .php ó .html y redireccionar 301 urls anteriores

Hola,

Quiero eliminar las extensiones .html ó .php de todas las urls de mi sitio.

He introducido en .htaccess el siguiente código :

Código:
Options +FollowSymLinks
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.html -f 
RewriteRule ^(.*)$ $1.html

Options +FollowSymLinks
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.*)$ $1.php
Esto funciona en el sentido de que ahora puede accederse a cualquier url sin escribir la extensión, pero duplica todas las urls (con y sin extensión).

¿ Cómo puedo hacer una redireción 301 del la url con extendión a sin ella ?

Es decir que cuando se escriba en el navegador :
Código:
http://www.dominio.com/subpagina.php
redireccione a :
Código:
http://www.dominio.com/subpagina
__________________
El Tarot no es un juego.
  #2 (permalink)  
Antiguo 26/09/2017, 03:47
 
Fecha de Ingreso: septiembre-2004
Ubicación: Andorra
Mensajes: 130
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: Quitar extensión .php ó .html y redireccionar 301 urls anteriores

Hola de nuevo.

Me contesto a mi mismo pues he encontrado la respuesta.

Para completar el código anterior habría que añadir :

Código:
RewriteCond %{THE_REQUEST} \.html
RewriteRule ^(.*)\.html$ /$1 [R=301,L]

RewriteCond %{THE_REQUEST} \.php
RewriteRule ^(.*)\.php$ /$1 [R=301,L]
El código completo para crear urls sin extensiones .html .htm .php
y redireccionar las anteriores a las nuevas sin extensión sería :
Código:
##########################################
# Crea URLs sin extension.
##########################################
# Se ve con y sin extension
Options +FollowSymLinks
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.html -f 
RewriteRule ^(.*)$ $1.html

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.htm -f 
RewriteRule ^(.*)$ $1.php

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.*)$ $1.php

# Eliminar urls anteriores con extension x redireccion 301

RewriteCond %{THE_REQUEST} \.html
RewriteRule ^(.*)\.html$ /$1 [R=301,L]

RewriteCond %{THE_REQUEST} \.htm
RewriteRule ^(.*)\.htm$ /$1 [R=301,L]

RewriteCond %{THE_REQUEST} \.php
RewriteRule ^(.*)\.php$ /$1 [R=301,L]
__________________
El Tarot no es un juego.
  #3 (permalink)  
Antiguo 06/10/2017, 05:07
 
Fecha de Ingreso: junio-2007
Mensajes: 266
Antigüedad: 10 años, 6 meses
Puntos: 5
Respuesta: Quitar extensión .php ó .html y redireccionar 301 urls anteriores

Ante todo muchas gracias por poner este código que me ha servido, pero sigo teniendo un problema, entre mis ficheros tengo uno que se llama causas.php y otro que se llama causas-detalles.php, al poner en el htaccess:

RewriteCond %{THE_REQUEST} \.php
RewriteRule ^(.*)\.php$ /$1 [R=301,L]

No me entra bien en el causas-detalle.php porque se redirecciona a causas.php, no sé mucho de htaccess pero supongo que esa regla afecta a todo lo que empiece por causas, ¿cómo podría hacer en htaccess una especie de excepción que le dijese que el fichero causas-detalles.php apunte a causas-detalle y no a causa?

Muchas gracias



La zona horaria es GMT -6. Ahora son las 18:43.