Então, me pediram para limpar as URLs do aplicativo da web que estamos executando atualmente no Apache (versão 2.4.9, se estiver interessado), mas depois de brincar com os comandos mod re_write por algumas horas, acho que ' Estou correndo em círculos. Aqui está o que estou tentando fazer.
Se o URL for algo assim (http://www.foo.bar/admin/index.php), faça com que seja exibido comohttp://www.foo.bar/admin
Se o URL for algo assim (http://www.foo.bar/admin/testpage.php), faça com que seja exibido comohttp://www.foo.bar/admin/testpage
Se o URL for algo assim (http://www.foo.bar/admin/testpage.php?id=15&foo=www), faça com que seja exibido comohttp://www.foo.bar/admin/testpage?id=15&foo=www
Até agora eu cheguei onde o index.php resolve....principalmente.....e o segundo exemplo resolve....às vezes. Basicamente, o código que tenho parece muito instável e resolve apenas dois níveis abaixo na árvore de arquivos. Então, eu queria saber se alguém aqui poderia me ajudar nisso? aqui está o que eu tenho no arquivo vhost (porque eu não queria ter isso em todos os diretórios como um arquivo .htaccess)
AllowOverride None
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/$ $1.php
RewriteRule ^([^/]+)/([^/]+)/$ /$1/$2.php
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/$ /$1/$2/$3.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$
RewriteRule (.*)$ /$1/ [R=301,L]
Responder1
Algo assim deve funcionar:
RewriteRule ([^/]+)/(.*)/?index.php$ $1
RewriteRule \.php $1
Editar: A primeira regra poderia ser substituída por esta, que é mais direta:
RewriteRule (.*)/index\.php?$ $1
por exemplo :
URL=http://www.foo.bar/admin/index.php
Regra correspondente =RewriteRule ([^/]+)/(.*)/?index.php$ $1
Resultado:http://www.foo.bar/admin
URL=http://www.foo.bar/admin/testpage.php
Regra correspondente =RewriteRule \.php $1
Resultado =http://www.foo.bar/admin/testpage
URL=http://www.foo.bar/admin/testpage.php?id=15&foo=www
Regra correspondente =RewriteRule \.php $1
Resultado =http://www.foo.bar/admin/testpage?id=15&foo=www