Visualizzazione dei risultati da 1 a 10 su 10

Discussione: url rewriting inverso

  1. #1
    Utente di HTML.it L'avatar di Psyko83
    Registrato dal
    Mar 2006
    Messaggi
    424

    url rewriting inverso

    Salve a tutti,
    cerco di essere il più chiaro possibile:
    ho creato i link prelevando i valori dal database ed è in questo formato /it/fiat/punto
    quindi per creare questo url non ho usato .htaccess convertendolo da un possibile link tipo prodotti.php?lan=it&mar=fiat&mod=punto
    Ora volendo prelevare i dati con $_GET da /it/fiat/punto come posso fare?
    Pensavo di creare un file .htaccess che mi crei un url tipo prodotti.php?lan=it&mar=fiat&mod=punto
    Ho già provato con
    RewriteEngine on
    RewriteRule /(.*)/(.*)/(.*)/?$ /prodotti.php?lan=$1&mar=$2&mod=$3

    Ma purtroppo non mi funziona! Se clicco sul link, mi da errore 404 in quanto quel path non esiste logicamente.

    Aiuto!

  2. #2
    Prima regola di vita) Se c'è una via semplice usa quella!

    Anzichè convertire, convertare, con verdure e prelevare con $_GET...
    $santo_ut = explode ("/", $_SERVER['REQUEST_URI']);

    Mo non so se gli indici ti partiranno da zero o da uno, essendoci uno / all'inizio...
    ma nell'array ti troverai più o meno che
    $santo_ut[1] == "it"
    $santo_ut[2] == "fiat"
    $santo_ut[3] == "punto"

    Se ti compaiono i warning per gli offset non dichiarati, puoi usare le funzioni reset, current, next.

    E se ti piace sta soluzione puoi ringraziarmi offrendomi l'whisky
    UtèñtE non ti dirà mai come trasformare l'argilla in marmo, ma se gli chiederai come progettare una simulazione con le bacche di mirto, ti risponderà: "Versane ancora!".

  3. #3
    Utente di HTML.it L'avatar di Psyko83
    Registrato dal
    Mar 2006
    Messaggi
    424
    Tutto giusto fin qui!
    Ma questo codice in quale pagina lo devo mettere dato che il link punta ad un url inesistente?
    Ti ricordo che il link /it/fiat/punto non esiste!

  4. #4
    Cioè, tu hai semplicemente creato i link nell'ipertesto, ma non hai fatto tali pagine...

    in sto caso direi che il titolo è sballato, perchè quello che hai fatto è esattamente l'url rewrite... non c'è nulla d'inverso... quando da un lato crei le corripondenze con htaccess, dall'altro lato devi metterli già riscritti, è la norma.

    Il tuo problema è un po' diverso, diremmo che rientra nel paradigma "uovo-gallina".

    Insomma... hai uno script dove avresti elaborato i dati con $_GET? Spero di si... sto script poniamo si chiami gallina.php

    Allora hai 2 strade, la mia, che a sto punto ti sconsiglio trattandosi di un banale problema di url rewrite, o la seconda, più semplice appunto che è l'url rewrite.

    RewriteRule /(.*)/(.*)/(.*)/?$ /gallina.php?lan=$1&mar=$2&mod=$3

    Poi nel file gallina.php elabori il get e fai l'uovo.

    Sto dicendo un mucchio di cose ovvie... ma era giusto per spiegarti che si tratta di un rewrite standard... hai riscritto l'ipertesto a mano senza preg_replace, ma apache lo userai comunque per assegnare un link statico a uno dinamico, non viceversa.

    Ora te dici che non ti funziona perchè ti restituisce 404... ma il file prodotti.php esiste? Ha la funzione di gallina.php? Il path è corretto (si trova nella root)?

    Se la risposta a ste banali domande è si, la cosa è più complessa... c'è un errore nel rewrite...
    - innanzitutto una regola simile funziona solo se passi tutti e 3 i parametri... se ne passi solo una o 2 non riconosce il pattern e non la legge, in sto caso devi fare 3 regole o una sola regola ma più complessa.

    Poniamo che hai dato anche tutti e 3 i parametri... le cose dovrebbero funzionare, visto che è tutto corretto, ripeto un banale rewrite senza intoppi...
    - ma il tuo hosting supporta il rewrite???

    Credo sia qui il problema... se non lo supporta, semplicemente non interpreta e prende l'url così com'è, quindi da un 404.
    A sto punto verifica, chiedi all'hosting se ti hanno attivato il mod_rewrite, followsymlinks e allowoverride.
    UtèñtE non ti dirà mai come trasformare l'argilla in marmo, ma se gli chiederai come progettare una simulazione con le bacche di mirto, ti risponderà: "Versane ancora!".

  5. #5
    Utente di HTML.it L'avatar di Psyko83
    Registrato dal
    Mar 2006
    Messaggi
    424
    Ciao, dunque diciamo che girovagando ancora ho trovato una giusta sintassi che faceva al caso mio, ora però non mi preleva il primo valore esempio:
    http://100.0.0.3/it/fiat/punto il file nella root principale prodotti.php mi preleva solo fiat e punto.
    Inoltre se manca un solo valore mi da errore 404
    Come posso risolvere questo problema?

    Grazie

  6. #6
    Fai 3 regole, è la cosa più semplice...

    RewriteRule (.*)/(.*)/(.*)/?$ /prodotti.php?lan=$1&mar=$2&mod=$3 [L]
    RewriteRule (.*)/(.*)/?$ /prodotti.php?lan=$1&mar=$2 [L]
    RewriteRule (.*)/?$ /prodotti.php?lan=$1 [L]

    Esattamente in quest'ordine...
    UtèñtE non ti dirà mai come trasformare l'argilla in marmo, ma se gli chiederai come progettare una simulazione con le bacche di mirto, ti risponderà: "Versane ancora!".

  7. #7
    Utente di HTML.it L'avatar di Psyko83
    Registrato dal
    Mar 2006
    Messaggi
    424
    Perfetto!
    L'ultimo problemino.....
    Purtroppo ora se tento di andare nell'area riservata, mi rimanda sempre a prodotti.php
    E' possibile specificare che quando si va in /riservata/ mi disabilita l'url rewriting?
    Altrimenti mi tocca modificare tutta l'area riservata.

    Grazie

  8. #8
    Moderatore di Motori di ricerca e webmarketing L'avatar di rigby76
    Registrato dal
    Oct 2005
    residenza
    Firenze
    Messaggi
    4,913
    Inserisci nelle cartelle in cui vuoi escludere l'url rewrite un file .htaccess con scritto

    codice:
    RewriteEngine Off
    estremizzo, banalizzo e polemizzo!

    Hai letto le FAQ sui Motori di Ricerca?

  9. #9
    Utente di HTML.it L'avatar di Psyko83
    Registrato dal
    Mar 2006
    Messaggi
    424
    Ho l'ennesimo problema...dovrei fare in modo che se si va al link /fiat mi dovrà reindirizzare alla pagina modelli.php e quindi uscirà l'elenco di tutti i modelli disponibili Fiat.
    Però se nel link ci sono tutti i valori e quindi /fiat/punto mi dovrà reindirizzare alla pagina xxx.php in cui ci sarà la scheda tecnica della Fiat Punto.
    Help me

  10. #10
    RewriteRule (.*)/(.*)/(.*)/?$ /yyy.php?lan=$1&mar=$2&mod=$3 [L]
    RewriteRule (.*)/(.*)/?$ /xxx.php?lan=$1&mar=$2 [L]
    RewriteRule (.*)/?$ /modelli.php?lan=$1 [L]

    Semplice
    UtèñtE non ti dirà mai come trasformare l'argilla in marmo, ma se gli chiederai come progettare una simulazione con le bacche di mirto, ti risponderà: "Versane ancora!".

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.