Remover .php de urls com htaccess

EDIT: arquivo .htaccess atual:

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] 

Meu site está hospedado em uma subpasta de um domínio conectado a uma grande conta de hospedagem.

 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 

O problema é que estou usando dois arquivos htaccess diferentes?

Aqui está um link que precisa funcionar: http://iioengine.com/demos

Notei que este arquivo htaccess atual interrompe todos os URLs do fórum também

Isso não funciona mais: http://iioengine.com/forums/Forum-Box2D

EDIT: Obrigado pela reabertura, eu fiz algum progresso. Aqui está o meu arquivo htaccess atual:

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

Eu ainda tenho 404 páginas, mas se eu colocar essa linha em:

RewriteRule . /index.php [L]

todas as solicitações não ‘. php’ são encaminhadas para a página inicial … Então, o mod_rewrite está definitivamente ativado, simplesmente não está funcionando direito. Alguém sabe qual poderia ser o problema?

EDIT : isso não é uma duplicata – nenhuma das outras soluções funciona para mim. Minha pergunta não é que soluções existem , é por isso que elas não estão funcionando para mim . Ninguém conseguiu resolver isso, eu mesmo tentei muitas soluções. O objective deste fórum não é obter soluções para problemas específicos?

Permita-me esclarecer …

Eu tenho o MyBB rodando em uma subpasta e suas reescritas funcionam bem. Este link, por exemplo, funciona: http://iioengine.com/forums/Forum-Box2D

Todas as páginas php que não fazem parte do MyBB ainda têm a extensão .php em suas URLs – estou tentando removê-las, mas nada está funcionando. Exemplo: http://iioengine.com/demos

… [postagem original]

Obviamente, há muitas informações sobre isso, mas eu tentei quase uma dúzia de soluções diferentes e não passei de uma página 404.

Aqui está o meu site: http://iioengine.com/ , todas as páginas são php, e tudo que não seja a página inicial e todas as páginas dos fóruns têm um ‘.php’ no final da URL que eu gostaria de remover.

Além de redirect solicitações não ‘.php’ para as páginas corretas, eu também gostaria de remover a parte ‘.php’ mesmo quando ela faz parte da requisição (porque todo o meu conteúdo já especifica ‘.php’ em sua hiperlinks).

Isto é o que eu tenho até agora, a maioria tirada deste post , mas não funciona, eu recebo uma 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] 

O que eu preciso no meu arquivo htaccess para remover a extensão do arquivo do URL em todos os casos? obrigado

Tente este código para esconder .php (funcionará nos dois 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] 

tente isso.

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

Se isso não funcionar, então o seu servidor não tem o mod_rewrite ativado ou o suporte a reescrita de URL.

Aqui está a syntax mais simples que eu encontrei, que resultaria como abaixo:

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

Resultados:

  1. PrivacyPolicy para legal.php? Mode = privacy
  2. Relatório / 55 para report.php? Id = 55

Isso deve 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] 

No apache 2.4 e posterior, você pode usar a seguinte regra com o sinalizador END para remover a extensão .php dos URLs.

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