Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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.
obrigado amigo, eu entendi + ou -, copiei o seu código e colei no htaccess e da erro no site
Internal Server ErrorThe 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?
É um erro 500, provavelmente tem algo errado na regra que eu criei, ou erro de sintaxe no teu arquivo .htaccess
Como ele está ?
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>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]
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>? 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
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.
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'].
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.
Ai não é possível amigo.. não dá para esconder o ID.
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?
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.
Obrigado Bruno, consegui fazer com a sua ajuda.
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']