msantos00 Posted December 13, 2015 at 07:29 PM Report Share #590620 Posted December 13, 2015 at 07:29 PM Boa noite, Após aproximadamente 20 dias de pesquisa e testes, inclusive um artigo aqui no portugal a programar sem qualquer resposta, tento tentado todas as soluções disponíveis neste forum e outros, a realidade é que simplesmente não consigo colocar o url limpo, simples assim. Já tentei tudo, mesmo tudo, inclusive funções nativas de php, basicamente o resultado foi nulo. artigo.php?post_id=x autor.php?name=x tag.php?name=x Tudo que possam imaginar foi tentado e testado com resultado nulo, ja tentei o explode, preg_replace e resultado 0, inclusive funções disponíveis aqui no forum e nada o url não mexe. Até me sinto mal, porque criei um blog com administração, funções, com gestor de paginas, gestor de arquivos, conta cliente um coisa a serio e chego ao .htaccess pareço um menino. Portanto, aguardo por pm orçamentos para me tratarem disso. Obrigado. Link to comment Share on other sites More sharing options...
vesperto Posted December 13, 2015 at 08:41 PM Report Share #590623 Posted December 13, 2015 at 08:41 PM .htaccess presumo q estejas a falar do apache, procura por mod_rewrite (se o q queres dizer por "url limpo" é algo como /artigo/id) Link to comment Share on other sites More sharing options...
tuga74 Posted December 13, 2015 at 09:27 PM Report Share #590624 Posted December 13, 2015 at 09:27 PM (edited) Olá, eu não percebo muito disto, mas acho que tás a abordar mal o problema.... acho que devias era gerar os links já url friendly e assim não precisavas de utilizar o htaccess para fazer isso. Não seria melhor utilizar um link /artigo/id/1 ou /artigo/1 em vez de usares um link /artigo.php?id=1 Edited December 13, 2015 at 09:30 PM by tuga74 http://www.nova.news Nova aprende automaticamente o que gostas de ler e mostra os conteúdos que te interessam. Link to comment Share on other sites More sharing options...
msantos00 Posted December 13, 2015 at 09:58 PM Author Report Share #590625 Posted December 13, 2015 at 09:58 PM Olá, eu não percebo muito disto, mas acho que tás a abordar mal o problema.... acho que devias era gerar os links já url friendly e assim não precisavas de utilizar o htaccess para fazer isso. Não seria melhor utilizar um link /artigo/id/1 ou /artigo/1 em vez de usares um link /artigo.php?id=1 Antes de mais, obrigado pela atenção, estás a referir-te a isto: https://www.portugal-a-programar.pt/topic/50321-routes/page__hl__route Ou isto : <? $artigo = strtolower(mysql_real_escape_string($exibe1['titulo'])); $artigoclean = ereg_replace("[^ 0-9a-zA-Z]", " ", $artigo); while (strstr($artigoclean, " ")) { $artigoclean = str_replace(" ", " ", $artigoclean); } $artigoclean = str_replace(" ", "+", $artigoclean); if ($artigo != '') { header( 'http://localhost/bblog/artigo/'.$artigo ); } ?> .htaccess presumo q estejas a falar do apache, procura por mod_rewrite (se o q queres dizer por "url limpo" é algo como /artigo/id) Não sei se aqui no forum posso citar ou referenciar outros blogs/artigos online, mas a verdade e que até livros comprei, mas não consigo aplicar a regra, possivelmente será algum de tipo de "truque" no htaccess. Embora que com o mesmo código eu tenha consigo criar esse urls mas com smarty o framework, para a loja online (outro projecto meu) mas com php base (sem framework) não consigo. fica aqui o códgigo que uso na loja via smarty framework. <IfModule mod_rewrite.c> RewriteEngine On RewriteBase /onlineshop RewriteCond %{THE_REQUEST} ^GET\ .*/index\.(php|html?)\ HTTP RewriteRule ^(.*)index\.(php|html?)$ $1 [R=301,L] RewriteRule ^.*-d([0-9]+)/.*-c([0-9]+)/pagina-([0-9]+)/?$ index.php?departamento=$1&categoria=$2&pagina=$3 [L] RewriteRule ^.*-d([0-9]+)/.*-c([0-9]+)/?$ index.php?departamento=$1&categoria=$2 [L] RewriteRule ^.*-d([0-9]+)/pagina-([0-9]+)/?$ index.php?departamento=$1&pagina=$2 [L] RewriteRule ^.*-d([0-9]+)/?$ index.php?departamento=$1 [L] RewriteRule ^pagina-([0-9]+)/?$ index.php?pagina=$1 [L]s RewriteRule ^.*-p([0-9]+)/?$ index.php?producto=$1 [L] </IfModule> Link to comment Share on other sites More sharing options...
capricorn Posted December 13, 2015 at 10:40 PM Report Share #590626 Posted December 13, 2015 at 10:40 PM Acho que será mais fácil ajudar se explicares melhor o teu problema. Para que precisas (ou pensas que precisas) do .htaccess? Link to comment Share on other sites More sharing options...
msantos00 Posted December 14, 2015 at 01:34 AM Author Report Share #590630 Posted December 14, 2015 at 01:34 AM Acho que será mais fácil ajudar se explicares melhor o teu problema. Para que precisas (ou pensas que precisas) do .htaccess? O preciso usar o mod_rewrite para artigos, categorias, autores e tags de um blog. A minha grande dúvida passa pelo seguinte, quando desenvolvi uma loja em Smarty o htaccess funcionou com o código que citei acima, mas se aplicar a função php só em php e mysql já não funciona, ou seja aparece sempre o "?id=". Aparece assim: http://localhost/bblog/artigo.php?id=3 , devia aparecer assim: http://localhost/bblog/artigo/3 tal como na loja online. A base das pastas é a mesma, o sistema de configuração o mesmo não estou mesmo a perceber o que se esta a passar. E depois não aparece erros, ou seja, fico sem nenhum ponto de partida para o que poderá ser, a única coisa que consegui ao aplicar o REQUEST_URI, mas aparecia http://localhost/bblog/c://wampp/www/bblog/index.php/artigo.php/3?id=3, e em todas as informações que recorri nunca consegui resolver o problema nem com o mapeamento em .htaccess. Link to comment Share on other sites More sharing options...
msantos00 Posted December 14, 2015 at 11:38 AM Author Report Share #590638 Posted December 14, 2015 at 11:38 AM Vou deixar aqui mais informação do meu código, uso uma função para mudar o conteudo de titulo para url amigável para evitar os %25 e %2520 (espaços e caracteres especiais). titulo: Tutorial: Começar a programar em Swift no Linux Após função: tutorial-Começar-a-programar-em-Swift-no-Linux o problema é sempre o ?id, não sai de forma nenhuma do url. http://localhost/bblog/artigo.php?titulo=Tutorial-Começar-a-programar-em-Swift-no-Linux devia ser http://localhost/bblog/artigo/titulo/Tutorial-Começar-a-programar-em-Swift-no-Linux/ Fica a função que utilizo: function url_slug($str, $options = array()) { // Make sure string is in UTF-8 and strip invalid UTF-8 characters $str = mb_convert_encoding((string)$str, 'UTF-8', mb_list_encodings()); $defaults = array( 'delimiter' => '-', 'limit' => null, 'lowercase' => true, 'replacements' => array(), 'transliterate' => false, ); // Merge options $options = array_merge($defaults, $options); $char_map = array( // Latin 'À' => 'A', 'Á' => 'A', 'Â' => 'A', 'Ã' => 'A', 'Ä' => 'A', 'Å' => 'A', 'Æ' => 'AE', 'Ç' => 'C', 'È' => 'E', 'É' => 'E', 'Ê' => 'E', 'Ë' => 'E', 'Ì' => 'I', 'Í' => 'I', 'Î' => 'I', 'Ï' => 'I', 'Ð' => 'D', 'Ñ' => 'N', 'Ò' => 'O', 'Ó' => 'O', 'Ô' => 'O', 'Õ' => 'O', 'Ö' => 'O', 'Ő' => 'O', 'Ø' => 'O', 'Ù' => 'U', 'Ú' => 'U', 'Û' => 'U', 'Ü' => 'U', 'Ű' => 'U', 'Ý' => 'Y', 'Þ' => 'TH', 'ß' => 'ss', 'à' => 'a', 'á' => 'a', 'â' => 'a', 'ã' => 'a', 'ä' => 'a', 'å' => 'a', 'æ' => 'ae', 'ç' => 'c', 'è' => 'e', 'é' => 'e', 'ê' => 'e', 'ë' => 'e', 'ì' => 'i', 'í' => 'i', 'î' => 'i', 'ï' => 'i', 'ð' => 'd', 'ñ' => 'n', 'ò' => 'o', 'ó' => 'o', 'ô' => 'o', 'õ' => 'o', 'ö' => 'o', 'ő' => 'o', 'ø' => 'o', 'ù' => 'u', 'ú' => 'u', 'û' => 'u', 'ü' => 'u', 'ű' => 'u', 'ý' => 'y', 'þ' => 'th', 'ÿ' => 'y', // Latin symbols '©' => '(c)', // Greek 'A' => 'A', 'B' => 'B', 'Γ' => 'G', 'Δ' => 'D', 'Ε' => 'E', 'Ζ' => 'Z', 'Η' => 'H', 'Θ' => '8', 'Ι' => 'I', 'Κ' => 'K', 'Λ' => 'L', 'Μ' => 'M', 'Ν' => 'N', 'Ξ' => '3', 'Ο' => 'O', 'Π' => 'P', 'Ρ' => 'R', 'Σ' => 'S', 'Τ' => 'T', 'Υ' => 'Y', 'Φ' => 'F', 'Χ' => 'X', 'Ψ' => 'PS', 'Ω' => 'W', 'Ά' => 'A', 'Έ' => 'E', 'Ί' => 'I', 'Ό' => 'O', 'Ύ' => 'Y', 'Ή' => 'H', 'Ώ' => 'W', 'Ϊ' => 'I', 'Ϋ' => 'Y', 'a' => 'a', 'b' => 'b', 'γ' => 'g', 'δ' => 'd', 'ε' => 'e', 'ζ' => 'z', 'η' => 'h', 'θ' => '8', 'ι' => 'i', 'κ' => 'k', 'λ' => 'l', 'μ' => 'm', 'ν' => 'n', 'ξ' => '3', 'ο' => 'o', 'π' => 'p', 'ρ' => 'r', 'σ' => 's', 'τ' => 't', 'υ' => 'y', 'φ' => 'f', 'χ' => 'x', 'ψ' => 'ps', 'ω' => 'w', 'ά' => 'a', 'έ' => 'e', 'ί' => 'i', 'ό' => 'o', 'ύ' => 'y', 'ή' => 'h', 'ώ' => 'w', 'ς' => 's', 'ϊ' => 'i', 'ΰ' => 'y', 'ϋ' => 'y', 'ΐ' => 'i', // Turkish 'Ş' => 'S', 'İ' => 'I', 'Ç' => 'C', 'Ü' => 'U', 'Ö' => 'O', 'Ğ' => 'G', 'ş' => 's', 'ı' => 'i', 'ç' => 'c', 'ü' => 'u', 'ö' => 'o', 'ğ' => 'g', // Russian 'А' => 'A', 'Б' => 'B', 'В' => 'V', 'Г' => 'G', 'Д' => 'D', 'Е' => 'E', 'Ё' => 'Yo', 'Ж' => 'Zh', 'З' => 'Z', 'И' => 'I', 'Й' => 'J', 'К' => 'K', 'Л' => 'L', 'М' => 'M', 'Н' => 'N', 'О' => 'O', 'П' => 'P', 'Р' => 'R', 'С' => 'S', 'Т' => 'T', 'У' => 'U', 'Ф' => 'F', 'Х' => 'H', 'Ц' => 'C', 'Ч' => 'Ch', 'Ш' => 'Sh', 'Щ' => 'Sh', 'Ъ' => '', 'Ы' => 'Y', 'Ь' => '', 'Э' => 'E', 'Ю' => 'Yu', 'Я' => 'Ya', 'а' => 'a', 'б' => 'b', 'в' => 'v', 'г' => 'g', 'д' => 'd', 'е' => 'e', 'ё' => 'yo', 'ж' => 'zh', 'з' => 'z', 'и' => 'i', 'й' => 'j', 'к' => 'k', 'л' => 'l', 'м' => 'm', 'н' => 'n', 'о' => 'o', 'п' => 'p', 'р' => 'r', 'с' => 's', 'т' => 't', 'у' => 'u', 'ф' => 'f', 'х' => 'h', 'ц' => 'c', 'ч' => 'ch', 'ш' => 'sh', 'щ' => 'sh', 'ъ' => '', 'ы' => 'y', 'ь' => '', 'э' => 'e', 'ю' => 'yu', 'я' => 'ya', // Ukrainian 'Є' => 'Ye', 'І' => 'I', 'Ї' => 'Yi', 'Ґ' => 'G', 'є' => 'ye', 'і' => 'i', 'ї' => 'yi', 'ґ' => 'g', // Czech 'Č' => 'C', 'Ď' => 'D', 'Ě' => 'E', 'Ň' => 'N', 'Ř' => 'R', 'Š' => 'S', 'Ť' => 'T', 'Ů' => 'U', 'Ž' => 'Z', 'č' => 'c', 'ď' => 'd', 'ě' => 'e', 'ň' => 'n', 'ř' => 'r', 'š' => 's', 'ť' => 't', 'ů' => 'u', 'ž' => 'z', // Polish 'Ą' => 'A', 'Ć' => 'C', 'Ę' => 'e', 'Ł' => 'L', 'Ń' => 'N', 'Ó' => 'o', 'Ś' => 'S', 'Ź' => 'Z', 'Ż' => 'Z', 'ą' => 'a', 'ć' => 'c', 'ę' => 'e', 'ł' => 'l', 'ń' => 'n', 'ó' => 'o', 'ś' => 's', 'ź' => 'z', 'ż' => 'z', // Latvian 'Ā' => 'A', 'Č' => 'C', 'Ē' => 'E', 'Ģ' => 'G', 'Ī' => 'i', 'Ķ' => 'k', 'Ļ' => 'L', 'Ņ' => 'N', 'Š' => 'S', 'Ū' => 'u', 'Ž' => 'Z', 'ā' => 'a', 'č' => 'c', 'ē' => 'e', 'ģ' => 'g', 'ī' => 'i', 'ķ' => 'k', 'ļ' => 'l', 'ņ' => 'n', 'š' => 's', 'ū' => 'u', 'ž' => 'z' ); // Make custom replacements $str = preg_replace(array_keys($options['replacements']), $options['replacements'], $str); // Transliterate characters to ASCII if ($options['transliterate']) { $str = str_replace(array_keys($char_map), $char_map, $str); } // Replace non-alphanumeric characters with our delimiter $str = preg_replace('/[^\p{L}\p{Nd}]+/u', $options['delimiter'], $str); // Remove duplicate delimiters $str = preg_replace('/(' . preg_quote($options['delimiter'], '/') . '){2,}/', '$1', $str); // Truncate slug to max. characters $str = mb_substr($str, 0, ($options['limit'] ? $options['limit'] : mb_strlen($str, 'UTF-8')), 'UTF-8'); // Remove delimiter from ends $str = trim($str, $options['delimiter']); return $options['lowercase'] ? mb_strtolower($str, 'UTF-8') : $str; } e para chamar a função: <?php echo url_slug( "".$exibe1['titulo']."" , array( 'delimiter' => '-', 'limit' => 300, 'lowercase' => false, 'replacements' => array( '/\b(an)\b/i' => 'a', '/\b(example)\b/i' => 'Test' ) ))?> e o suposta .htaccess Options +FollowSymLinks RewriteEngine on RewriteRule artigo/titulo/(.*)/ artigo.php?titulo=$1 RewriteRule artigo/titulo/(.*) artigo.php?titulo=$1 Fico a guardar. Link to comment Share on other sites More sharing options...
tuga74 Posted December 14, 2015 at 02:08 PM Report Share #590646 Posted December 14, 2015 at 02:08 PM O url que è gerado com o url_slug() è correto? http://www.nova.news Nova aprende automaticamente o que gostas de ler e mostra os conteúdos que te interessam. Link to comment Share on other sites More sharing options...
bioshock Posted December 14, 2015 at 07:24 PM Report Share #590668 Posted December 14, 2015 at 07:24 PM (edited) Vê o meu post http://www.portugal-a-programar.pt/topic/69831-aspas-no-url/#entry577436 Edited December 14, 2015 at 07:25 PM by bioshock Link to comment Share on other sites More sharing options...
msantos00 Posted December 14, 2015 at 07:51 PM Author Report Share #590670 Posted December 14, 2015 at 07:51 PM O url que è gerado com o url_slug() è correto? o url_slug() apenas "traduz" o titulo ex: pavavra 2 com o url_slug() fica palavra-2. fica aqui o código, dentro de um ciclo while. <a class="btn btn-sm" href="http://localhost/bblog/artigo.php?titulo= <?php echo url_slug( "".$exibe1['titulo']."" , array( 'delimiter' => '-', 'limit' => 300, 'lowercase' => false, 'replacements' => array( '/\b(an)\b/i' => 'a', '/\b(example)\b/i' => 'Test' ) ))?> ">Saiba Mais</a> a única diferença e que esta função está em php/mysql e na loja está em .tpl mas é o mesmo. Link to comment Share on other sites More sharing options...
msantos00 Posted December 14, 2015 at 09:10 PM Author Report Share #590674 Posted December 14, 2015 at 09:10 PM Vê o meu post http://www.portugal-a-programar.pt/topic/69831-aspas-no-url/#entry577436 existe algum exemplo prático ? É que não entendi a lógica. Link to comment Share on other sites More sharing options...
tuga74 Posted December 14, 2015 at 09:25 PM Report Share #590676 Posted December 14, 2015 at 09:25 PM OK aqui fica a minha última tentativa de ajuda porque sinceramente ainda não percebi o que pretendes fazer... Se tiveres um request ao server com este url http://localhost/bblog/artigo/titulo/Tutorial-Começar-a-programar-em-Swift-no-Linux/ Com esta regra no .htaccess RewriteRule artigo/titulo/(.*) artigo.php?titulo=$1 Vai procurar pela página http://localhost/bblog/artigo.php?titulo=Tutorial-Começar-a-programar-em-Swift-no-Linux Se em vez disso estás a tentar gerar nos links pretty urls o htaccess não tem nada a ver http://www.nova.news Nova aprende automaticamente o que gostas de ler e mostra os conteúdos que te interessam. Link to comment Share on other sites More sharing options...
msantos00 Posted December 15, 2015 at 10:45 PM Author Report Share #590721 Posted December 15, 2015 at 10:45 PM Agradeço a atenção de todos vós, mas infelizmente nada resolveu. Hoje contactei uma empresa e já enviei o código, independentemente de códigos php ou jquery o url tem de ser manipulado via .htaccess, falei com a pessoa em questão ele diz que dá, eu tentei e na loja dá e no blog nada, nem com código nem sem código o url não mexe, fica ali o ?titulo= ou ?id= e simplesmente não mexe. Como todos os artigos que vi estão incompletos, não dá para aprender é tudo muito subjectivo, se eu não sei fazer, sem ver um artigo ou exemplo devidamente documentado nunca vou aprender, e o meu objectivo é aprender fiquei sem menos 150€ mas aprendo. Eu sou assim, gosto de ver um exemplo a funcionar estudo entendo o funcionamento e depois crio e altero à minha maneira. Aliais comprei 2 scripts online, apliquei a mesma função e nada igual, pensei que erro do wamp, instalei o xamp nada, meti no lampp em ubuntu exactamente igual até comprei um domínio hoje fiz upload tentei e nada, não tenho conhecimento para mais. Nos script que comprei por exemplo teria de ser assim: index.php?page=categories&cat_id=1 o htaccess deveria ser: RewriteRule ^page/([^/]*)/([^/]*)\.html$ /nBlog/index.php?page=$1&cat_id=$2 [L] Resultado nenhum, desisti. 😕 Assim que ficar resolvido partilho o código convosco . Agradeço, Cumprimentos. Link to comment Share on other sites More sharing options...
xintect Posted December 17, 2015 at 11:31 PM Report Share #590808 Posted December 17, 2015 at 11:31 PM (edited) pesquisem sobre MVC e depois vejam estes tutorials até ao fim! : https://www.youtube.com/embed/videoseries?list=PLfdtiltiRHWGXVHXX09fxXDi-DqInchFD digam adeus aos ? & etc... e o melhor de tudo? é que vocês compreendem o que está lá e podem elaborar coisas fantásticas, GG Edited December 17, 2015 at 11:33 PM by xintect Link to comment Share on other sites More sharing options...
tiago.f Posted January 14, 2016 at 03:08 PM Report Share #591969 Posted January 14, 2016 at 03:08 PM Olá, msantos. Se calhar já vou um pouco tarde mas ainda assim: conheces http://www.slimframework.com/ ? Construo todos os meus projectos php "em cima" desta framework. Muito leve e fácil de usar. Esta slim framework faz de forma transparente aquilo que precisas, e só precisas de por isto no .htaccess RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^ index.php [QSA,L] Nota: não tenho qualquer participação no project Slim. Para aplicações web muito complexas, vale a pena ver Laravel. Cumprimentos Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now