2012-06-20 16 views
5

Mi archivo .htaccess es el siguiente:mod_rewrite añade la extensión .php

Options -Multiviews 
RewriteEngine On 
RewriteCond %{HTTP_HOST} ^example.com 
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ $1.php 

El problema que estoy teniendo es que cuando intento acceder a mi sitio sin el www. prefijo, la extensión .php se agrega a la dirección, que a menudo puede causar un problema. Por ejemplo, si intento acceder a mi página de inicio con la dirección example.com, esa dirección se transforma en www.example.com/.php. Quiero el www. para ser agregado, pero la extensión .php añadida al final solo causa un error. ¿Cómo puedo solucionar esto?

+0

Esta es una forma insegura de reescribir "/x"->"/x.php" –

+2

RewriteRule no puede cambiar la URL en la barra de direcciones del navegador. Necesita el indicador '[R]' (redirigir) para redirigir el navegador a nuevas URL. –

+1

¿Qué está eliminando la extensión de php? –

Respuesta

1

RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

Retire la L en el [R=301,L], que significa "Última", que significa "detener el procesamiento de RewriteRules después de éste."

El 301 también significa "redirigir permanentemente". En este caso, su navegador recordará la redirección permanente. ¿Es posible que tuvieras una versión de tus reglas de reescritura, fue a tu URL y luego la cambiaste? Borre su caché o pruebe con otro navegador.

+0

Intenté hacer eso pero no funcionó. El problema persiste: cuando ingreso en mysite.com/main, me transfiero inmediatamente a www.mystie.com/main.php, pero no quiero esa extensión .php. – user532493

+0

Editado mi respuesta. Nota 301, la redirección se puede almacenar en caché en su navegador. –

+0

Gracias por la ayuda. Probé con tres navegadores diferentes y borré el caché en todos ellos, pero aún tengo el mismo problema. – user532493

0

La bandera "L" en la línea 4 de su archivo significa "último", es decir, no procesará más reglas. Intente eliminar L.

+0

Intenté hacer eso pero no funcionó. El problema persiste: cuando ingreso en mysite.com/main, me transfiero inmediatamente a www.mystie.com/main.php, pero no quiero esa extensión .php. – user532493