Reescreva o URL após redirect o erro 404 htaccess

Então, eu sei que isso pode parecer um pouco estranho, mas por causa da consistência, eu gostaria que todos os meus URLs apareçam desta forma: http://domain.com/page/ Até agora eu consegui as páginas regulares funcionando, mas não consigo parecem ter as páginas de erro funcionando corretamente.

Se o usuário visitar uma página ou diretório que não existe, eu gostaria que o navegador redirecionasse para: http://domain.com/404/ Esse diretório, no entanto, não existirá. A localização real da página de erro estará em /pages/errors/404.php

Além disso, embora eu não precise de uma resposta exata para todos os vários erros (400, 401, 403, 404, 500), aplicarei o método que for dado para redirect todos eles para suas URLs “adequadas” (por exemplo, http : //domain.com/400/ http://domain.com/500/ etc.)

Alguma ideia?

Tente isso no seu .htaccess:

.htaccess

ErrorDocument 404 http://example.com/404/ ErrorDocument 500 http://example.com/500/ # or map them to one error document: # ErrorDocument 404 /pages/errors/error_redirect.php # ErrorDocument 500 /pages/errors/error_redirect.php RewriteEngine On RewriteBase / RewriteCond %{REQUEST_URI} ^/404/$ RewriteRule ^(.*)$ /pages/errors/404.php [L] RewriteCond %{REQUEST_URI} ^/500/$ RewriteRule ^(.*)$ /pages/errors/500.php [L] # or map them to one error document: #RewriteCond %{REQUEST_URI} ^/404/$ [OR] #RewriteCond %{REQUEST_URI} ^/500/$ #RewriteRule ^(.*)$ /pages/errors/error_redirect.php [L] 

O ErrorDocument redireciona todos os 404s para um URL específico, todos os 500s para outro URL (substitua pelo seu domínio).

As regras de reconfiguração mapeiam essa URL para seu script 404.php real. As expressões regulares RewriteCond podem se tornar mais genéricas se você quiser, mas eu acho que você tem que definir explicitamente todos os códigos ErrorDocument que você quer sobrescrever.

Redirecionamento Local:

Altere .htaccess ErrorDocument para um arquivo que exista (deve existir ou você receberá um erro):

 ErrorDocument 404 /pages/errors/404_redirect.php 

404_redirect.php

  

Redirecionar com base no número do erro

Parece que você precisará especificar uma linha ErrorDocument em .htaccess para cada erro que deseja redirect (consulte: Apache ErrorDocument e Apache Custom Error ). O exemplo .htaccess acima tem vários exemplos. Você pode usar o seguinte como o script de redirecionamento genérico para replace 404_redirect.php acima.

error_redirect.php

  

Coloque este código no seu arquivo .htaccess

 RewriteEngine On ErrorDocument 404 /404.php 

em que 404.php é o nome do arquivo e colocado na raiz. Você pode colocar o caminho completo até aqui.

Tente adicionar essa regra ao topo do seu htaccess:

 RewriteEngine On RewriteRule ^404/?$ /pages/errors/404.php [L] 

Então, sob isso (ou qualquer outra regra que você tenha):

 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-l RewriteRule ^ http://domain.com/404/ [L,R] 

No seu arquivo .htaccess, se você estiver usando o apache, pode tentar

Regra para a página de erro – 404

ErrorDocument 404 http://www.domain.com/notFound.html