Cómo usar htaccess para renombrar páginas y eliminar extensiones sin afectar los archivos externos css o js

Quiero crear una regla en htaccess para cambiar el nombre de mis páginas, por ejemplo:

Quiero que domain.com/page1 realmente abra la página domain.com/content?p=page1 o domain.com/page2 realmente abra la página domain.com/content?p=page2

para esto tengo una expresión regular muy simple:

RewriteRule (.*)$ /content.php?p=$ [L]

ahora el problema es que esto afecta TODO incluso archivos como styles.css o functions.js, etc, o incluso images/logo.jpg.

Entonces, lo que estoy buscando es una expresión regular que reenvíe todas mis páginas si no tienen puntos (.) o barras inclinadas (/)

por ejemplo:

domain.com/blog  true
domain.com/home?lang=en true
domain.com/styles.css false
domain.com/image.png false
domain.com/folder/file false

¡Gracias!

preguntado el 02 de mayo de 12 a las 19:05

2 Respuestas

Vea el código a continuación:

<IfModule mod_rewrite.c>
    RewriteEngine on

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f

    RewriteRule ^(.*)$ content.php?p=$1 [L,QSA]
</IfModule>

Si la URL solicitada no es un directorio y no es un archivo, se ejecutará en la siguiente línea.

¡Aclamaciones!

contestado el 02 de mayo de 12 a las 19:05

Este es el código que necesitas poner en tu archivo .htaccess:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^([^/.]+)/?$ content.php?p=$1 [L,QSA]

contestado el 02 de mayo de 12 a las 19:05

!-l es para evitar la regla de reescritura si el URI solicitado es un enlace válido. - anubhava

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.