rewrite .htacces

andrea1971

Nuovo Utente
29 Dic 2010
29
0
0
volevo chiedere dove sta l'errore,visto che provo a richiamare una parola doppia e il + non me lo da,questo e' l'esempio:


RewriteRule ^ricerca/([0-9a-zA-Z_-]+)([0-9a-zA-Z_-è]+)([0-9a-zA-Z_-è]+)/([0-9a-zA-Z_-è]+)

searchresults.php?searchtext=$1+$2&type=$3&submit=Cerca [NC,QSA]


dovrebbe darmi la pagina a questo indirizzo o sbaglio:

miosito.com/ricerca/pianta+carnivora/piante

dove pianta+carnivora e' la parola ricercata $1+$2
e piante e' la categoria $3


grazie
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
Ti do un consiglio: non dovresti mai usare il rewrite engine per i risultati dell'invio dei moduli. Usa il metodo POST in modo da non passare le variabili nell'URL. Comunque quello che vuoi si dovrebbe poter ottenere con:
Codice:
RewriteRule ^ricerca/([a-zA-Z0-9\+]+)/([a-zA-Z0-9]+)/$ searchresults.php?searchtext=$1&type=$2&submit=Cerca [QSA,L]
 

andrea1971

Nuovo Utente
29 Dic 2010
29
0
0
Ti do un consiglio: non dovresti mai usare il rewrite engine per i risultati dell'invio dei moduli. Usa il metodo POST in modo da non passare le variabili nell'URL. Comunque quello che vuoi si dovrebbe poter ottenere con:
Codice:
RewriteRule ^ricerca/([a-zA-Z0-9\+]+)/([a-zA-Z0-9]+)/$ searchresults.php?searchtext=$1&type=$2&submit=Cerca [QSA,L]

mi funziona ma non mi prende la parola doppia,esempio:
pianta+carnivora/piante

se metto carnivora/piante funziona!!

thanks
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
Ho fatto una prova. Il file .htaccess contiene:
Codice:
RewriteEngine On
RewriteRule ^ricerca/([a-zA-Z0-9\+]+)/([a-zA-Z0-9]+)/?$ searchresults.php?searchtext=$1&type=$2&submit=Cerca [QSA,L]
E il file searchresults.php contiene:
PHP:
<?php
var_dump($_GET);
Se accedo a /ricerca/piante+carnivore/piante ottengo:
Codice:
array(3) {
  ["searchtext"]=>
  string(11) "pianta ciao"
  ["type"]=>
  string(6) "pianta"
  ["submit"]=>
  string(5) "Cerca"
}
Quindi funziona correttamente.
 

andrea1971

Nuovo Utente
29 Dic 2010
29
0
0
Ti do un consiglio: non dovresti mai usare il rewrite engine per i risultati dell'invio dei moduli. Usa il metodo POST in modo da non passare le variabili nell'URL. Comunque quello che vuoi si dovrebbe poter ottenere con:
Codice:
RewriteRule ^ricerca/([a-zA-Z0-9\+]+)/([a-zA-Z0-9]+)/$ searchresults.php?searchtext=$1&type=$2&submit=Cerca [QSA,L]

Grazie per il consiglio,pero io vorrei fare vedere l'URL della pagina dove l'utente si trova!,se uso il metodo POST ,mi fa vedere solo searchresults.php,e io vorrei fare vedere altre informazioni come:parola+ricercata/categoria/
ad esempio : www.miosito.com/ricerca/pianta+carnivora/piante
diciamo che il RewriteRule nel file .htacces funziona e mi da la pagina ma solo tramite link.
mi spiego meglio se creo un collegamento ad una pagina con questo link:
www.miosito.comsearchresults.php?searchtext=pianta+carnivora&type=10&submit=Cerca mi rimanda a:
www.miosito.com/ricerca/pianta+carnivora/piante
mentre tramite ricerca mi crea lo stesso URL:
www.miosito.com/searchresults.php?searchtext=pianta+carnivora&type=10&submit=Cerca ma non mi rimanda
alla pagina come sopra,ma rimane in :
www.miosito.com/searchresults.php?searchtext=pianta+carnivora&type=10&submit=Cerca

probabilmente e' un problema di struttura del form,ma non ne vengo fuori!help
grazie
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
Questo perché non è possibile passare i parametri di un form nell'URL se stai usando il rewrite engine (ecco perché ti ho detto di usare POST!). L'unico modo è far puntare il form ad una pagina PHP "di transizione" che reindirizzi all'URL corretto:
PHP:
<?php
if ($_SERVER['REQUEST_METHOD'] != 'POST') {
    header('Location: pagina_del_form.php');
}

$query = '/' . str_replace(' ', '+', $_POST['query']);
$categoria = isset($_POST['categoria']) ? "/{$categoria}";

header("Location: /ricerca{$query}{$categoria}");
?>
Comunque ripeto che ti stai complicando inutilmente la vita.
 

andrea1971

Nuovo Utente
29 Dic 2010
29
0
0
Questo perché non è possibile passare i parametri di un form nell'URL se stai usando il rewrite engine (ecco perché ti ho detto di usare POST!). L'unico modo è far puntare il form ad una pagina PHP "di transizione" che reindirizzi all'URL corretto:
PHP:
<?php
if ($_SERVER['REQUEST_METHOD'] != 'POST') {
    header('Location: pagina_del_form.php');
}

$query = '/' . str_replace(' ', '+', $_POST['query']);
$categoria = isset($_POST['categoria']) ? "/{$categoria}";

header("Location: /ricerca{$query}{$categoria}");
?>
Comunque ripeto che ti stai complicando inutilmente la vita.

questa naturalmente va modificata in base ai miei parametri del form ed inserita nalla pagina searchresults.php
giusto!! grazie mille intanto,non vorrei romperti troppo,ma quando non ci esci,e' un macello,specialmente senza,la conoscenza!! thanks!
 

andrea1971

Nuovo Utente
29 Dic 2010
29
0
0
purtroppo non riesco a testarlo mi da degli errori di sintassi :
PHP:
if ($_SERVER['REQUEST_METHOD'] != 'POST') {
    header('Location: pagina_del_form.php');
}

$query = '/' . str_replace(' ', '+', $_POST['query']);
$categoria = isset($_POST['categoria']) ? "/{$categoria}";///qui e poi succ.

header("Location: /ricerca{$query}{$categoria}");///qui
 

andrea1971

Nuovo Utente
29 Dic 2010
29
0
0
funzionerebbe anche ,e solo che il form,e' in tutte le pagine ed e' in una pagina .tpl ,e che fa riferimento ad una pagina .php e solo che quando visito la pagina .php mi rimanda a quella specificata in Location.
e' per caso possibile scrivere questa funzione in un'altro linguaggio da poterla inserire in una pagina.tpl dove ho il form ??
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
Non penso che sia possibile. L'errore di fondo è proprio nel voler passare i dati del form tramite GET usando il rewrite engine. Tu praticamente stai cercando di fare una cosa che neanche il più complicato dei Web framework gestisce.
 

andrea1971

Nuovo Utente
29 Dic 2010
29
0
0
ho risolto,creando una nuova pagina .php e non includendola nel rewrite,come dicevi tu,l'unica cosa e' che per il momento riesco solo ad acquisire solo la query,e non la categoria!!
in questa riga:
PHP:
 header('Location: pagina_del_form.php');
e' per caso possibile assegnare piu pagina?
domanda da principiante??

grazie,come al solito sei un grande!
 

andrea1971

Nuovo Utente
29 Dic 2010
29
0
0
no,non c'e' bisogno e solo che dovrei risolvere questo ultimo problema,per il resto funziona tutto:
questo e' il codice che ho modificato,e in questo modo funziona:
PHP:
if ($_SERVER['REQUEST_METHOD'] != 'POST') {
 header('Location: risultati.php');
}
$searchtext = '/' . str_replace(' ', '+', $_POST['searchtext']);
if(empty($_POST['type']))
	{
	echo "";
else
{
$type = '/' . str_replace(" ","", $_POST['type']);
}
if(empty($_POST['sezione']))
	{
	echo "";
else
{
$sezione = '/' . str_replace(" ","", $_POST['sezione']);
}
header("Location: /ricerca{$searchtext}{$type}{$sezione}");

cosi funziona,e solo che volevo assegnare delle array per la sezione type,perche me li da come numeri e vorrei convertirli in nomi,ad esempio 10=piante,11=fiori,ecc. ma in questo modo non mi prende piu i risultati della ricerca,ma me li da tutti!!
sto a inpazzi!!!grazie
 

andrea1971

Nuovo Utente
29 Dic 2010
29
0
0
il problema l'ho risolto adesso pero mi e' ritornato il problemino dove l'avevo risolto prima:
PHP:
$searchstring=($_GET['searchtext']); 
$sSQL="SELECT keywords FROM ".PREFIX."pm_search WHERE keywords='".$searchstring."'";    
    $result = $db->query($sSQL);  
    
      if($result->size()>0)
        {
        while($rs=$result->fetch())    
    
$sSQL="UPDATE ".PREFIX."pm_search SET hit = hit + 1 WHERE keywords='".$searchstring."'";
$db->query($sSQL);
    }
    else if ($searchstring=($_GET['searchtext'])== NULL)
    {
    echo '';
}
else
    {
    $searchstring=($_GET['searchtext']);
            
$sSQL="INSERT ".PREFIX."pm_search SET  keywords='".$searchstring."'ON duplicate KEY UPDATE hit=hit+ 1 ";         
$db->query($sSQL);
}

cosi funzionava ,ma adesso cambiando i parametri del form in POST,non funziona piu il richiamo delle parole piu ricercate!
qualche soluzione??
thanks
 

andrea1971

Nuovo Utente
29 Dic 2010
29
0
0
praticamente non mi riesce a fare piu il controllo del :
PHP:
$sSQL="SELECT keywords FROM ".PREFIX."pm_search WHERE keywords='".$searchstring."'";    
    $result = $db->query($sSQL);  
    
      if($result->size()>0)
        {
        while($rs=$result->fetch())

e di conseguenza mi inserisce ogno volta la parola ricercata doppia,sia in categoria,che non creandomi due record,anche se la parola esiste gia,ho provato a modificare la richiesta da
PHP:
GET
A
PHP:
POST
ma niente fa uguale,questo e' il codice attuale che ho:
PHP:
sSQL="SELECT keywords,section FROM ".PREFIX."pm_search WHERE keywords='".$searchstring."'AND section='".$section."'";	
    $result = mysql_query(sSQL); 
	$searchstring =($_POST['searchtext']);
	$section =str_replace("/","",$section);
	  if (mysql_num_rows($result) == 0)
		{
 $sSQL = sprintf("INSERT INTO ".PREFIX."pm_search (keywords,section) VALUES (%s,%s)ON duplicate KEY UPDATE hit=hit+ 1",
							
							GetSQLValueString($searchstring=($_POST['searchtext']),"text"),
							
							GetSQLValueString(str_replace("/","",$section),"text"));
									
									$result=$db->query($sSQL);
   
 
}
	
		
else
{
while ($row = mysql_fetch_assoc($result))
	$sSQL="UPDATE ".PREFIX."pm_search SET hit = hit + 1 WHERE keywords='".$searchstring."'AND section='".$section."'";	
$db->query($sSQL);
}
 
Discussioni simili
Autore Titolo Forum Risposte Data
L php rewrite PHP 1
A [PHP] ERRORE QUANDO CAMBIO SLUG NEL CMS e REWRITE PHP 6
I Url rewrite con .htaccess funziona ma poi mostra indirizzo "reale" nella barra di navigazione Apache 1
C [PHP] Url Rewrite titolo pagina in url PHP 3
C [Apache] Rewrite url Apache 2
S [ASP] url rewrite Classic ASP 0
P url rewrite htaccess Apache 0
M Rewrite percorso .... Apache 1
felino [Mod_rewrite] Errore nel rewrite Apache 2
F mod rewrite PHP 0
F Url rewrite SEO e Posizionamento 0
altrove redirect 301 alla stessa pagina con un url rewrite PHP 0
Eugene Redirect 301 tra pagine con url rewrite Apache 0
L file .htaccess non funzionante in url rewrite HTML e CSS 0
R Url Rewrite "inverso" Web Server 0
M Rewrite URL pagine Classic ASP 6
A url rewrite e tag TITLE PHP 1
M Rewrite di URL con .htaccess Apache 1
P AddModule mod_rewrite.c non funzionante per rewrite Apache 3
A Url Rewrite, qualcosa non funziona Apache 2
K Isapi rewrite Web Server 1
L Url rewrite .htaccess senza database Apache 1
M Url rewrite .htaccess Apache 2
WpStyle htaccess e rewrite url Apache 1
A Modulo rewrite Apache 1
G Configurare Mod Rewrite su file .Htaccess Apache 0
A [PHP]Rewrite PHP 3
F [APACHE] rewrite Apache 0
Web Designer Plugin SEO: Mod Rewrite vBulletin CMS (Content Management System) 0
G chiarimenti su mod rewrite Web Server 4
LaKanka Problema rewrite rule file .htaccess Apache 7
SolidSnake4 mod rewrite Apache 5
danlupo Rewrite Rule Apache 9
L Utilizzo Mod Rewrite Classic ASP 2
V link interni a fondo pagina e url rewrite Classic ASP 2
C Rewrite pagine PHP PHP 0
SolidSnake4 mod-rewrite PHP 3
S url rewrite due variabili Web Server 0
T come si url-rewrite con phpnuke? PHP 1

Discussioni simili