Ir para o conteúdo
softklin

[htaccess] Erro 404 sem redirecionar

Mensagens Recomendadas

softklin    12
softklin

Amigos, precisava de uma ajudinha muito simples em mod_rewrite.

Estou a fazer URI's limpos, mas esta parte já está concluída. O que eu queria era que alguém escrevesse um caminho que não existe, fosse para uma página de erro personalizada, mas sem alterar o URL errado, por exemplo:

/este/directorio/nao/existe

pretendo redirecionar para /404/, mas no browser deve-se manter visível /este/directorio/nao/existe (ou seja, apenas um redireccionamento interno).

Alguém me sabe ajudar nisto?

EDIT: visto que estou a trabalhar com directórios "ficticios", acho que as opções -f e -d não me irão ajudar muito...

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
softklin    12
softklin

Obrigado tirácio pela resposta. No entanto ao colocar no htaccess

ErrorDocument 404 /404/

ele redirecciona para o /404/. O que pretendia era manter o url que não existe na barra de endereços, mas apresentando a página de erro.

Cumps.

---

Em adição ao que disse, queria fazer isto com htaccess, visto que não tenho possibilidade de mexer no servidor

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Nazgulled    8
Nazgulled

Eu acabei de testar isso no meu servidor (com o ErrorDocument) e ele redirecciona-me internamente, o URL fica o mesmo...

Tenta esta hipótese:

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule (.*) /404.php [L]

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
softklin    12
softklin

Obrigado Nazgulled pela dica.

Porém, isto ficou um bocado baralhado, mas deve ser culpa minha, porque já tinha outros conteúdos no meu htacces... acho útil colocá-los aqui:

RewriteEngine On

# clean uri
RewriteRule ^([a-zA-Z0-9]+)/$ /$1 [R]
RewriteRule ^([a-zA-Z0-9]+)$ /index.php?page=$1

# paginas 404
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) /404/ [L]

Acho que o 1º conjunto de regras está atrofiar com o 2º conjunto que me deste (que faz todo o sentido, e funciona sozinho).

A minha intenção com o primeiro conjunto de regras é:

1ª linha, se um endereço for /contactos/, ele passa a ser /contactos

2ª linha, o ficheiro php "apanha" o nome fictício da pasta, e abre o ficheiro.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Nazgulled    8
Nazgulled

Experimenta trocar os grupos de condições... E já agora, tu na primeira regra estás basicamente a tirar uma / final? Isso não é necessário, ou então não te explicaste bem...

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
softklin    12
softklin

Nazgulled, suponho que trocar, seja por o grupo de regras not found por cima das de redirecionamento para o PHP; com essa solução, dá-me o internal server error 500.

Battousai, estava habituado a fazer assim, com as duas condições, mas no que se puder reduzir, óptimo :D

Tirácio, é precisamente isso :D funciona perfeitamente! Ficou assim:

RewriteEngine On

# clean uri
RewriteRule ^([a-zA-Z0-9]+)([/]?)$ /index.php?page=$1 [L]

# paginas 404
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) /404/ [L]

Obrigado aos três!! :D

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade