Removendo .php e .html da URL

0

Como posso remover .php e .html dos meus URLs?

Então, em vez de ser domain.com/about.php , deve ser domain.com/about .

Eu usei o mesmo código .htaccess na minha hospedagem na OVH, mas desde que comprei um VPS e fiz isso sozinho, não está funcionando. Acabei de receber um erro 404

The requested URL /about was not found on this server.

Estou usando:

RewriteEngine On
RewriteRule ^([^\.]+)$ $1.php [NC,L]
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://domain.com/$1 [R=301,L]
DirectorySlash On
    
por TrifleTower 14.11.2017 / 16:51

1 resposta

0

O jeito que eu faço:

RewriteCond %{REQUEST_URI} !(\.[^./]+)$
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule (.*) $1.html [L]

RewriteCond %{REQUEST_URI} !(\.[^./]+)$
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}.htm -f
RewriteRule (.*) $1.htm [L]

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

Cada uma das sub-rotinas tem a seguinte lógica:

  1. Se o arquivo solicitado não tiver uma extensão, ou seja, ele não corresponderá a \.[^./]+)$ , e

  2. O arquivo solicitado não é um diretório, e

  3. O arquivo solicitado não existe, e

  4. Existe um arquivo com o nome solicitado e a extensão .html (ou .htm , ou .php ), então

  5. Sirva esse arquivo.

O [L] significa o último ou o final: não é preciso mais reescrever, então o servidor pode pular com segurança o resto das regras de reescrita.

    
por AlexP 14.11.2017 / 17:11