Eliminar .php de las URL con htaccess

EDITAR: archivo actual .htaccess:

Options +FollowSymLinks -MultiViews # Turn mod_rewrite on RewriteEngine On RewriteBase / ## hide .php extension snippet # To externally redirect /dir/foo.php to /dir/foo RewriteCond %{THE_REQUEST} ^[AZ]{3,}\s([^.]+)\.php [NC] RewriteRule ^ %1 [R,L] # To internally forward /dir/foo to /dir/foo.php RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{DOCUMENT_ROOT}/$1.php -f RewriteRule ^(.*?)/?$ $1.php [L] 

Mi sitio está alojado en una subcarpeta de un dominio conectado a una gran cuenta de hosting.

 basesite /iioengine /forums /.htaccess //file works /.... //other MyBB content /demos.php /index.php //iioengine.com (homepage) /.htaccess //file doesn't work /... //other iioengine php pages 

¿El problema es que estoy usando dos archivos htaccess diferentes?

Aquí hay un enlace que debe funcionar: http://iioengine.com/demos

Noté que este archivo htaccess actual también interrumpe todas las URL de los foros

Esto ya no funciona: http://iioengine.com/forums/Forum-Box2D

EDITAR: Gracias por reabrir, he progresado un poco. Aquí está mi archivo htaccess actual:

  RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d  

Todavía tengo 404 páginas, pero si coloco esta línea:

RewriteRule . /index.php [L]

todas las solicitudes que no son ‘. php’ se envían a la página de inicio … Así que mod_rewrite está definitivamente habilitado, simplemente no funciona bien. ¿Alguien sabe cuál podría ser el problema?

EDITAR : Esto no es un duplicado , ninguna de las otras soluciones funciona para mí. Mi pregunta no es si existen soluciones , es por eso que no están trabajando para mí . Nadie ha podido resolver esto, he estado probando muchas soluciones yo mismo. ¿No es el objective de este foro obtener soluciones a problemas específicos?

Permíteme aclarar …

Tengo MyBB ejecutándose en una subcarpeta y sus reescrituras funcionan bien. Este enlace, por ejemplo, funciona: http://iioengine.com/forums/Forum-Box2D

Todas las páginas php que no son parte de MyBB todavía tienen la extensión .php en sus URL. Estoy intentando eliminarlas, pero nada funciona. Ejemplo: http://iioengine.com/demos

… [publicación original]

Obviamente hay mucha información sobre esto, pero he probado casi una docena de soluciones diferentes y no he pasado de una página 404.

Aquí está mi sitio: http://iioengine.com/ , todas las páginas son php, y todo lo que no sea la página principal y todas las páginas de los foros tienen un ‘.php’ al final de su URL que me gustaría eliminar.

Además de redirigir las solicitudes que no son ‘. Php’ a las páginas correctas, también me gustaría eliminar la parte ‘.php’ incluso cuando es parte de la solicitud (porque todo mi contenido ya especifica ‘.php’ en su hipervínculos).

Esto es lo que tengo hasta ahora, principalmente tomado de esta publicación , pero no funciona, obtengo una página 404.

 RewriteEngine on RewriteBase / RewriteCond %{SCRIPT_FILENAME} !-d RewriteCond %{SCRIPT_FILENAME} !-f RewriteRule ^(.*)$ $1.php [L,QSA] RewriteCond %{REQUEST_URI} ^/(.*).php$ RewriteRule ^(.*)$ %1 [L,QSA] 

¿Qué necesito en mi archivo htaccess para eliminar la extensión de archivo de la URL en todos los casos? Gracias

Pruebe este código para ocultar .php (funcionará en ambos sentidos):

 Options +FollowSymLinks -MultiViews # Turn mod_rewrite on RewriteEngine On RewriteBase / ## don't touch /forum URIs RewriteRule ^forums/ - [L,NC] ## hide .php extension snippet # To externally redirect /dir/foo.php to /dir/foo RewriteCond %{THE_REQUEST} ^[AZ]{3,}\s([^.]+)\.php [NC] RewriteRule ^ %1 [R,L] # To internally forward /dir/foo to /dir/foo.php RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}.php -f RewriteRule ^(.*?)/?$ $1.php [L] 

prueba esto.

  RewriteEngine on RewriteCond %{SCRIPT_FILENAME} !-d RewriteCond %{SCRIPT_FILENAME} !-f RewriteRule ^(.*)$ $1.php [L,QSA]  

si esto no funciona, su servidor no tiene mod_rewrite activado o admite la reescritura de url.

Aquí está la syntax más simple que he encontrado, que resultaría de la siguiente manera:

 RewriteEngine on RewriteRule ^/?PrivacyPolicy$ legal.php?mode=privacy [NC,L] RewriteRule ^Report/([0-9]+)$ report.php?id=$1 [NC,L] 

Resultados:

  1. PrivacyPolicy to legal.php? Mode = privacy
  2. Informe / 55 a report.php? Id = 55

Esto debería funcionar

 Options -Indexes +FollowSymlinks -MultiViews RewriteEngine on DirectoryIndex index.php # REDIRECT Force requests for named index files to drop the index file filename, and force non-www to avoid redirect loop RewriteCond %{THE_REQUEST} ^[AZ]{3,9}\ /([^/]*/)*index\.(html?|php[45]?)(\?[^\ ]*)?\ HTTP/ RewriteRule ^(([^/]*/)*)index\.(html?|php[45]?)$ http://example.com/$1 [R=301,L] RewriteCond %{THE_REQUEST} ^[AZ]{3,9}\ /([^/]+)/([^\.]+)\.php\ HTTP/ RewriteRule ^([a-zA-Z0-9_-]+)/([^.]+)\.php$ http://example.com/$1/$2 [R=301,L] RewriteCond %{THE_REQUEST} ^[AZ]{3,9}\ /([^/]+)/([^/]+)/([^\.]+)\.php\ HTTP/ RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([^.]+)\.php$ http://example.com/$1/$2/$3 [R=301,L] # REDIRECT www to non-wwww RewriteCond %{HTTP_HOST} !^example\.com$ [NC] RewriteRule .? http://example.com%{REQUEST_URI} [R=301,L] # REWRITE url to filepath RewriteRule ^([a-zA-Z0-9_-]+)/([^/.]+)$ /$1/$2.php [L] RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([^/.]+)$ /$1/$2/$3.php [L] 

En apache 2.4 y posterior, puede usar la siguiente regla con el indicador END para eliminar la extensión .php de las URL.

 RewriteEngine on RewriteRule ^(.+)\.php$ /$1 [NC,L,R=301] RewriteCond %{REQUEST_FILENAME}.php -f RewriteRule ^(.+)/?$ /$1.php [END]