Eliminar la extensión de php del sitio web con htaccess

Tengo estos enlaces en mi sitio web:

http://crw4u.be/werkgever.php (Solo puedo agregar 2 urls en mi pregunta, ya que soy un n00b)

Agregué un código a htaccess para poder acceder a estas páginas sin el php:

http://crw4u.be/werkgever

Funciona bien con este código:

RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^([^\.]+)$ $1.php [NC,L] 

Sin embargo, uso ciertos formularios en mis archivos php:

 

Y recibo errores al enviar el formulario con el código agregado en htaccess:

No encontrado . La URL / correo electrónico solicitado no se encontró en este servidor.

¿Alguien sabe cómo adaptar este código? He estado buscando y probando, pero no puedo resolver esto.

¡Altamente apreciado!

Tomás

Solutions Collecting From Web of "Eliminar la extensión de php del sitio web con htaccess"

Pruebe esta Regla:

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

Aquí hay una descripción básica de cómo funcionan las reglas:

Expresiones regulares

 . (any character) * (zero of more of the preceding) + (one or more of the preceding) {} (minimum to maximum quantifier) ? (ungreedy modifier) ! (at start of string means "negative pattern") ^ (start of string, or "negative" if at the start of a range) $ (end of string) [] (match any of contents) - (range if used between square brackets) () (group, backreferenced group) | (alternative, or) \ (the escape character itself) 

Usando expresiones regulares, es posible buscar todo tipo de patrones en las URL y reescribirlos cuando coincidan

Banderas

Las banderas se agregan al final de una regla de reescritura para indicarle a Apache cómo interpretar y manejar la regla. Se pueden usar para indicarle a apache que debe tratar la regla como insensible a las mayúsculas y minúsculas, para detener las reglas de procesamiento si coincide con la actual o una variedad de otras opciones. Están separados por comas y están entre corchetes. Aquí hay una lista de las banderas, con sus significados.

 C (chained with next rule) CO=cookie (set specified cookie) E=var:value (set environment variable var to value) F (forbidden - sends a 403 header to the user) G (gone - no longer exists) H=handler (set handler) L (last - stop processing rules) N (next - continue processing rules) NC (case insensitive) NE (do not escape special URL characters in output) NS (ignore this rule if the request is a subrequest) P (proxy - ie, apache should grab the remote content specified in the substitution section and return it) PT (pass through - use when processing URLs with additional handlers, eg, mod_alias) R (temporary redirect to new URL) R=301 (permanent redirect to new URL) QSA (append query string from request to substituted URL) S=x (skip next x rules) T=mime-type (force specified mime type) 

Excepciones y casos especiales

Las condiciones de reescritura se pueden probar de diferentes maneras: no es necesario tratarlas como patrones de expresiones regulares, aunque esta es la forma más común en que se usan. Estas son las diversas formas en que se pueden procesar las condiciones de reescritura:

 Pattern (is test string greater than pattern) =Pattern (is test string equal to pattern) -d (is test string a valid directory) -f (is test string a valid file) -s (is test string a valid file with size greater than zero) -l (is test string a symbolic link) -F (is test string a valid file, and accessible (via subrequest)) -U (is test string a valid URL, and accessible (via subrequest)) 

Espero que te ayude 🙂

Agregue este código también, le permitirá acceder a los directorios.

 RewriteCond %{REQUEST_FILENAME} !-d