Jump to content
Sign in to follow this  
softklin

[htaccess] Erro 404 sem redirecionar

Recommended Posts

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...


Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Share this post


Link to post
Share on other sites
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


Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Share this post


Link to post
Share on other sites
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]

Share this post


Link to post
Share on other sites
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.


Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Share this post


Link to post
Share on other sites
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...

Share this post


Link to post
Share on other sites
djthyrax

Precisas de usar o L nas flags da regra dos clean URLs.


Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!

Share this post


Link to post
Share on other sites
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


Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.