Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [rewriterule] espressione regolare

    finora ho utilizzato un sistema di Fabio Heller (vedi articoli) per la riscrittura degli url ed ora vorrei passare al rewrite url

    i link che devono risultare "graditi" ai motori di ricerca possono avere specificate tre variabili ed ora sono così strutturati

    la riscrittura degli url l'ho fatta così
    codice:
    RewriteEngine on
    RewriteRule ^index.php/var1=([0-9]+)/var2=([0-9]+)/var3=([0-9]+) index.php?var1=$1&var2=$2&var3=$3 [L]
    RewriteRule ^index.php/var1=([0-9]+)/var2=([0-9]+) index.php?var1=$1&var2=$2 [L]
    RewriteRule ^index.php/var1=([0-9]+) index.php?var1=$1 [L]
    e mi sembra che tutto sia ok (datemi conferma se potete)

    ora avrei una ulteriore necessità, quella di "appendere" altre variabili all'url (queste variabili vengono aggiunte solo se sono presenti le tre precedenti)
    ho pensato di strutturare il link così
    ed applicare quest'ulteriore regola
    codice:
    RewriteRule ^index.php/var1=([0-9]+)/var2=([0-9]+)/var3=([0-9]+)?([^/]+) index.php?var1=$1&var2=$2&var3=$3&$4 [L]
    ma sembra che il punto interrogativo sia indigesto nell'espressione regolare

    qualcuno mi sa dire come correggerla o altri suggerimenti?

    se invece avete critiche da fare vi dico che
    [diffamazione mode]
    questo sistema mi è stato consigliato da gm
    [/diffamazione mode]


    ok, ok...non è vero....
    E' la mia opinione ed io la condivido
    Non condivido la tua idea ma darei la vita perché tu la possa esprimere (Voltaire)
    Scrivi sul muro

  2. #2
    è normale, credo ^^

    il ? a che si riferisce? prima già c'+ un +
    quindi o lo butti dentro (dopo il +) oppure lo togli o metti la cosa alla quale si riferisce

  3. #3
    Utente di HTML.it L'avatar di kuarl
    Registrato dal
    Oct 2001
    Messaggi
    1,093
    non ho controllato l'espressione regolare ma effettivamente il punto interrogativo è un carattere speciale nelle regex, backslashalo

  4. #4
    il backslash già l'ho provato ma niente

    Daniele in pratica io vorrei che il rewrite agisse solo su var1 var2 e var3
    in presenza di eventuali altre variabili var4 var5 ecc...dopo il punto interrogativo le rimettesse uguali tranne che sostituire il punto interrogativo con & in modo da avere un normale link con le relative 5 variabili

    se guardi il link che il forum ha ristretto dovresti capire dove voglio andare a parare
    E' la mia opinione ed io la condivido
    Non condivido la tua idea ma darei la vita perché tu la possa esprimere (Voltaire)
    Scrivi sul muro

  5. #5
    il ? si riferisce al campo subito precedente dicendogli va bene anche se non c'è (almeno se ricordo bene)

    tray this

    ^index.php/var1=([a-zA-Z0-9_,\.\-]+)/var2=([a-zA-Z0-9_,\.\-]+)/var3=([a-zA-Z0-9_,\.\-]+)\?(.*)

    ovviamente devi SEMPRE passare 3 variabili

    cmq basta che la provi con le preg di php
    apache usa le PCRE per gestire le espressioni regolari quindi se va su php deve andare anche su apache

    RewriteRule ... index.php?var1=$1&var2=$2&var3=$3&$4 [L]

    codice:
    <?php
    	$matches = array();
    	$testo = "index.php/var1=1/var2=5/var3=3?asd";
    	preg_match("#^index.php/var1=([0-9]+)/var2=([0-9]+)/var3=([0-9]+)\?(.*)#", $testo, $matches);
    	print_r($matches);
    ?>

  6. #6
    grazie daniele ma non va

    con questa, se metto qualsiasi cosa al posto del punto interrogativo, funziona perfettamente

    codice:
    RewriteRule ^index.php/var1=([0-9]+)/var2=([0-9]+)/var3=([0-9]+)?([^/]+) index.php?var1=$1&var2=$2&var3=$3&$4 [L]
    mentre col punto interrogativo niente
    non riesco a farglielo interpretare come carattere non speciale

    vabbé, per ora rinuncio...domani è un altro giorno si vedrà...
    E' la mia opinione ed io la condivido
    Non condivido la tua idea ma darei la vita perché tu la possa esprimere (Voltaire)
    Scrivi sul muro

  7. #7
    ma...backslashiando a me con php prende perfettamente il tutto


    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahhhhhhhhhhhhhh hh

    che siamo tonti

    apache se non erro la parte dopo il ? non la considera + facente parte dell'url e quindi probabilmente neanche arriva a te nelle rewrite url e la passa cosi comé

    a te in effetti serve fare 1 cosa un po + complicata
    meglio che ti vai a studiar bene bene bene le rewrite url

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 © 2025 vBulletin Solutions, Inc. All rights reserved.