Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Edu1234

expressões regulares

Recommended Posts

Oi pessoal, quero redirecionar atraves do htaccess todas as páginas que estiverem dentro da pasta produtos/ para produtos/index.php
exemplo, tenho um link meusite.com.br/produtos/produto1.php dai através do htaccess eu redireciono ele para index.php

dai preciso pegar a parte da url que diz produto1 para saber qual produto vou falar nesta página.

e depois mudar a url denovo para meusite.com.br/produtos/produto1.php ao invés de meusite.com.br/produtos/index.php


Como devo fazer isso? alguém pode me ajudar, não entendo nada de expressões regulares.

Obrigado a todos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

você fez uma confusãozinha ai.. em vez de fazer 2 redirects na verdade você fará uma sobrescrita para o server, mas o client continua vendo a url original, entendeu ?

 

 

RewriteCond %{REQUEST_URI} !^/produtos\/index\.php$  # evitar loop infinito
RewriteRule ^produtos\/([a-z0-9]+)\.php$ produtos/index.php?page=$1 [NC,L]
ai você pega o "produto" pelo $_GET['page']

Compartilhar este post


Link para o post
Compartilhar em outros sites

obrigado amigo, eu entendi + ou -, copiei o seu código e colei no htaccess e da erro no site

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, webmaster@meusite.com and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.

Additionally, a 500 Internal Server Error error was encountered while trying to use an ErrorDocument to handle the request.

Apache/2.2.29 (Unix) mod_ssl/2.2.29 OpenSSL/1.0.1e-fips mod_bwlimited/1.4 Server at Port 80

oque pode ser isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

É um erro 500, provavelmente tem algo errado na regra que eu criei, ou erro de sintaxe no teu arquivo .htaccess

 

Como ele está ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

tem isso nele

<ifModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file \.(html?|txt|css|js|php|pl)$
mod_gzip_item_include handler ^cgi-script$
mod_gzip_item_include mime ^text/.*
mod_gzip_item_include mime ^application/x-javascript.*
mod_gzip_item_exclude mime ^image/.*
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
</ifModule>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deixa assim então:

 

RewriteEngine On
RewriteCond %{REQUEST_URI} !^/produtos\/index\.php$
RewriteRule ^produtos\/([a-z0-9]+)\.php$ produtos/index.php?page=$1 [NC,L]

Compartilhar este post


Link para o post
Compartilhar em outros sites

agora ele não da aquele erro, mas não arruma a url

<ifModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/produtos\/index\.php$
RewriteRule ^produtos\/([a-z0-9]+)\.php$ produtos/index.php?page=$1 [NC,L]
</ifModule>
testei com e sem o <ifModule mod_rewrite.c>

Compartilhar este post


Link para o post
Compartilhar em outros sites

? como assim "arruma" ?

 

Ele não vai mudar a URL.. ele vai reescrever para o server, e não fazer redirect.

Você vai acessar:

 

/produtos/banana.php e o arquivo que realmente irá responder será o produtos/index.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

certo, mas eu quero que a url fique como /produtos/banana.php

 

exemplo.

no meu site tenho links assim

/produtos/banana.php

/produtos/laranja.php

dai quando entro neles a url que vai mostrar o produto será a /produtos/index.php

só que a url deve ser exibida como /produtos/banana.php

 

não sei se estou explicando corretamente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Exato, é isso que irá acontecer.

 

Irá ficar /produtos/banana.php e o arquivo que será chamado será o /produtos/index.php

 

E você terá o "banana", dentro da variavel $_GET['page'].

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi Bruno, estive fora alguns dias e não consegui responder.

esta funcionando, mas ele esta pegando o id com oque vem antes do .php, acho q não falei antes,

eu pego a página pelo id e não pelo nome,

então a página eu abro assim, meusite.com.br/produtos/banana.php?id=5

ele ta pegando como se o id fosse banana e não o 5, então eu preciso pegar o id 5 e depois esconder

para que fique meusite.com.br/produtos/banana.php

 

fico no aguardo de sua ajuda, muito obrigado mesmo amigo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ai não é possível amigo.. não dá para esconder o ID.

Compartilhar este post


Link para o post
Compartilhar em outros sites

consegui fazer e te agradeço muito por isso, dai tenho uma página que envia um formulario dentro da pasta

/produtos/envia.php

só que quando é disparada ela pega e chama a página index.php tbm, dai não envia o formulário, tem como retirar uma página daquela regra?

Compartilhar este post


Link para o post
Compartilhar em outros sites

O produtos/index.php já está sendo excluido por essa regra:

RewriteCond %{REQUEST_URI} !^/produtos\/index\.php$
O seu problema com o formulário deve ser por outro motivo.

Crie um novo tópico, com o código de exemplo para reproduzirmos e explique o que acontece.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.