.htaccess redirecionar toda a extensão para php

7

Atualizei recentemente meu arquivo .htaccess para ocultar a extensão .php das urls. Funciona bem, quando eu tento acessar domain.com/index , ele exibe o arquivo php.

Quando eu digito domain.com/index.php , ele me redireciona para o URL domain.com/index e exibe o arquivo .php também.

Gostaria de redirecionar todas as outras extensões para o URL no extension para exibir o arquivo .php por motivos de segurança. Meu problema é que eu não posso configurar meu .htaccess para redirecionar extensões conhecidas como .html .asp. aspx .shtml etc. para o URL sem extensão, e obtenha o arquivo .php exibido como o conteúdo.

Meu arquivo .htaccess tem esta aparência:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

# php extension to no extension url
RewriteCond %{THE_REQUEST} ^[A-Z]+\s.+\.php\sHTTP/.+
RewriteRule ^(.+)\.php $1 [R=301,L]


# no extension to the .php file
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteCond %{REQUEST_URI} !/$
RewriteRule (.*) $1\.php [L]

# this is for the index
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
    
por jameson 01.03.2013 / 14:49

3 respostas

1

Tente estes em seu arquivo .htaccess e por favor, verifique se o mecanismo de reescrita está ativado no servidor e há mod_rewrite.c módulo está lá no arquivo principal do conf do apache que é httpd.conf.

1. RewriteRule ^ sobre $ about.php [L] OU 2 RewriteEngine on RewriteCond% {REQUEST_FILENAME}! -D RewriteCond% {REQUEST_FILENAME} .php -f RewriteRule ^ (. *) $ $ 1.php

Espero que estes funcionem bem.

OU caso contrário, esta é outra opção com toda a descrição:

Regras de reescrita do Apache     Opções + FollowSymLinks   RewriteEngine On   RewriteBase /

Adicionar barra ao URL

RewriteCond% {REQUEST_FILENAME}! -f   RewriteCond% {REQUEST_URI}! (. [A-zA-Z0-9] {1,5} | / | # (. )) $   RewriteRule ^ (. ) $ $ 1 / [R = 301, L]

Remover extensão .php do URL

RewriteCond% {REQUEST_FILENAME}! -d   RewriteCond% {REQUEST_FILENAME} .php -f   RewriteRule ^ ([^.] +) / $ $ 1.php

Fim das regras de reescrita do Apache

Coisas que você gostaria de saber:

  1. Isso é para sites que não usam um front-end-controller, onde todas as solicitações são forçadas a index.php. Se você precisar disso, você deve substituir o terceiro bloco com o seu próprio.

  2. O exemplo é mostrado apenas com .php. Se você quiser usá-lo com .html, por exemplo, você deve copiar / colar o terceiro bloco e substituir “.php” na linha (1,) 3 e 4 com “.html” (a menos que alguém tenha uma maneira legal de fazê-lo). ?)

  3. O conteúdo de "example.com/something/" pode ser exibido em "example.com/something.php" ou "example.com/something/index.php”.

  4. Para vincular a outras páginas, apenas href="/ alguma / coisa /" ou href="// example.com/some/thing /”.

  5. Com .css e .js, você quer href="/ style.css" ou href="/ folder1 / style.css". Senão, se você href="style.css" de "example.com/folder2/file.php", verá "example.com/folder2/style.css".

Observação: há http: // na frente de todos os exemplos.com.

    
por 21.02.2014 / 14:01
0

se não houver outro "." em seus arquivos, exceto pela extensão, você tentou substituir ".php" por qualquer string?

# php extension to no extension url
RewriteCond %{THE_REQUEST} ^[A-Z]+\s.+\.\s+\sHTTP/.+
RewriteRule ^(.+)\.php $1 [R=301,L]
    
por 28.03.2013 / 09:00
0

Experimente o código abaixo e altere a extensão que você deseja ocultar:

1.Para arquivo html

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.html [NC]
RewriteRule ^ %1 [R,L,NC]
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^ %{REQUEST_URI}.html [L]

2.Para arquivo php

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R,L,NC]
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^ %{REQUEST_URI}.php [L]
    
por 13.10.2014 / 14:20