Newsgroup: it.comp.www.php
Titolo: mod_rewrite vediamo se ho capito

 
in httpaccess ho scritto questo
 
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^([a-zA-Z0-9]+|)/?$ index.php?name=$1 [QSA,NC]
 
ho una tabella cosi fatta
 
| idProdotti | nomeProdotti | url
|     1	     | Scarpe Rosse | scarpe-rosse
 
 
posso linkare 
 
href="prodotti/scarpe-rosse"
 
$name=$_GET['name'];
 
e nella query mettere WHERE url="$name"  		
 
Oppure linkare
 
href="prodotti/scarpe-rosse?idProdotti=1"
 
$idProdotti=$_GET['idProdotti'];
 
e nella query mettere WHERE idProdotti="$idProdotti"  
 
 
Come è più corretto? specie ai fini SEO 
 
 
Poi: come faccio a far si che /prodotti/scarpe-rosse 
 
sia rediretto a prodotti.php?name=$1
 
e invece /notizie/scarpe-rosse 
 
sia rediretto a notizie.php?name=$1
 
file presenti sulla radice , invece di creare fisicamente la cartella
prodotti e notizie 
 
Grazie
Enrico 
 
 
 


Scusa se sono franco
 
ma con queste premesse non vai molto lontano, hai dei grooooossi buchi 
di SQL Injection (e non solo quello)
 
 > href="prodotti/scarpe-rosse?idProdotti=1"
 
che posso far diventare:
www.nome_sito.com/prodotti/scarpe-rosse?idProdotti=
" or 1=1 or "
 
 > $idProdotti=$_GET['idProdotti'];
 > e nella query mettere WHERE idProdotti="$idProdotti"
 
e la tua query diventa:
WHERE idProdotti="" or 1=1 or ""
 
 
 
ti consiglio di partire dalle basi
poi sanitizza SEMPRE i dati di input,
utilizzare almeno PDO,
 
per il problema del SEO non andare a modificare .htaccess (che vale solo 
su apache)
 
direziona tutto su index.php e utilizza un sistema di routing.
 
 
dividi la parte di business logic dalla presentazione con un pattern MVC 
o ancor più attuale un pattern middleware.
 
incomincia a capire e studiare i vari PSR (
https://www.php-fig.org/
)
 
dopo aver capito come utilizzare il linguaggio
cerca un framework che più ti si addice e utilizzalo.
 
nel 2018 alle soglie del 2019 non serve reinventare la ruota, ma 
soprattuto cerchiamo di scrivere del buon software con le migliori best 
prctices.
 
Ciao

 cerca un framework che più ti si addice e utilizzalo.
 
ogni volta che tento di ottimizzare qualcosa scritto da altri, ci metto
di più che a riscrivermelo da me.
 
COMUNQUE ho scelto una terza soluzione che a parer mio è la più
consona:  /prodotti/scarpe-rosse.htm (o php) 
 
Ovvero scrivo un  campo url nella tabella dove metto una stringa
univoca (scarpe-rosse)  che mi servirà da indice nella query.
 
Credo sia il modo corretto e meglio ottimizzato SEO-url,
 
Oppure no?
 
Enrico 
 
 
 
 

 Oppure no?
 
non conosco il problema che tenti di risolvere, può essere una soluzione 
accettabile se non hai altre variabili in gioco,
se invece avessi necessità di gestire più variabili come marca modello a 
numerazione ?
 
/prodotti/scarpe/nike/air-max/42 (marca, modello, numero)
/prodotti/scarpe/nike (tutte le scarpe della marca)
/prodotti/scarpe (tutte le scarpe)
/prodotti/nike ( tutti i prodotti della marca)
 
con un sistema di routing ti viene facile
 
(nomenclatura di zend-route molto semplificata)
/prodotti/scarpe[/{marca}][/{modello}][/{numero}] -> scarpe.php
/prodotti/{marca} -> prodotti.php
e così via.
(tra parentesi {} i parametri le [] opzionale.
 
 
Ciao

 
 
è esattamente quello che  non voglio fare, ho forti preconcetti,
sicuramente sbagliati, su diramazioni directory troppo complesse e url
troppo lunghi.
 
Enrico 
 

 e nella query mettere WHERE idProdotti="$idProdotti"  
 
RIFORMULO LA DOMANDA PERCHÈ EVIDENTEMENTE NON ERA FORMULATA BENE.
 
sto sperimentando il mod rewrite per il seo url:
#1
Per avere un SEO URL corretto nei link, devo associale una stringa
univoca di testo, memorizzata nella tabella del database campo URL ( per
esempio) differente per ogni record, e utilizzare questa come indice?
 
 OPPURE
 
#2
 l'indice della query rimane sempre
 id della tabella.
 
In questo caso, come lo trasmetto, id, alla query dell'output ?
 
e se non serve nemmeno avere un capo url,  a cui associare ogni record
una stringa univoca, come lo creo il seo url del record di scarpe
rosse?
 
Enrico 
 
 
 


 
Allora, così è come fanno un po' tutti, ma ci possono essere soluzioni
molto diverse a seconda dei casi.
 
1- con mod_rewrite, fai puntare tutto quello che non è un file fisico
al tuo index.php. In questo modo fai *tutto* (o quasi) in PHP.
E mod_rewrite te lo puoi anche scordare ;)
2- nello index.php leggi lo REQUEST_URI e, magari leggendo un file di
configurazione, vedi il da farsi. Nel tuo caso, più nello specifico:
3- se è uno URI che deve puntare ad un prodotto, o categoria di prodotti,
pulisci la parte di stringa di URI, fai una query al DB (se è un nome
fai una query con where sul nome, che avrai messo UNIQUE, se è un id fai
una query sull'id), e torni indietro i dati.
4- ?
5- profit
 
Perché di solito si fa così:
- se un URI punta ad un file fisico, si torna indietro il file e basta,
senza far partire l'interprete PHP.
- ogni altra richiesta ha un solo entry-point. Facendo le cose a modo,
un file di configurazione è abbastanza per smistare richieste di ogni
tipo su differenti parti di codice.
- isoli il "bootstrapping" delle pagine (se layouting, connessione al DB,
presentazione, etc., funziona su una pagina, funziona su tutte)
- separi completamente la gerarchia logica da quella implementativa. Per
un sito magari non ha molto senso, ma per servizi web è un bel plus.
 
Ancora, non c'è la soluzione generale, ma mi sembra che la maggior parte
dei sistemi famosi, ad oggi, continui ad usare questa strategia.
 
 
Ciao!

 
 
prima di tutto grazie, l'obbiettivo è ovviamente quello di creare un
SEO url, pertanto devo averla preparata antecedentemente la stringa
del seo url giusto?
 
 e memorizzata nel database giusto?
 
che poi sarà il nome messo UNIQUE giusto?
 
Enrico 
 
 

 
 
Una delle soluzioni è certamente creare "in anticipo" lo URL d'accesso alla
risorsa, salvarlo nel DB, e fare query su quello. Un'altra era come hai
fatto te nel post iniziale.
Su progetti medio/grandi avrai una soluzione ibrida: alcuni URL gerarchici
che puntano a risorse (/prodotti/pippo o /marche/pluto, che smisti con
query a prodotti o marche), altri URL codificati nel DB (permalinks, forced
redirects, etc., che smisti facendo query sui campi URL), altri URL
codificati come stringa nella configurazione (/faq.html o /contatti.html).
 
 
Ciao!

Il giorno Tue, 18 Sep 2018 06:15:57 -0700 (PDT)
fma...@gmail.com
 ha scritto:

Nel post iniziale avevo anche messo la stringa del'url al posto del
nome; ovvero mi ero preparato una stringa univoca che era poi il seo
url. 
 
ptions +FollowSymlinks
RewriteEngine on
RewriteRule ^([a-zA-Z0-9]+|)/?$ index.php?name=$1 [QSA,NC]
 
ho una tabella cosi fatta
 
| idProdotti | nomeProdotti | url
|     1	     | Scarpe Rosse | scarpe-rosse
 
 
posso linkare 
 
href="prodotti/scarpe-rosse"
 
$name=$_GET['name'];
 
e nella query mettere WHERE url="$name" 
 
--------------
 
Comunque ho capito o nome con stringa ripulita o url preparato, poi  se
non è più lento ..
 
apache (mod_rewrite) -> index.php (REQUEST_URI) ->  destinazione.htm
 
a questo mi manca la regola per mandare tutto quello che non è fisico
all'index.php
 
Enrico 
 

 
 
dunque se scrivo una cosa così dovrebbe andare
[
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^([a-zA-Z0-9]+|)/?$ index.php?$1 [QSA,NC]
]
 
Ma deve essere per forza index.php ?
 
ho posso far gestire  a un altro file che uso solo per questo?
tipo request_uri.php
 
Enrico
 
 
 

 
 
mi correggo . in .httpaccess scrivo :
 
RewriteEngine On
 
 
RewriteRule ^$ index.php?/ [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) index.php?/$1 [QSA,L] 
 
 
 
Rimane la domanda, che succede se uso un altro file invece
dell'index.php?
 
enrico

 dell'index.php?
 
Il rewrite engine di Apache non sa niente di PHO o di altro. Puoi anche 
passargli index.py o 
pippo.pl
 e lui semplicemente redirige. Quello che 
succede dopo non gli interessa. :)
 
Quindi sì, puoi usare quello che vuoi.
 
Bye.
 

 
 
Ok, grazie .. continuo a studiare ..
 
anche se la cosa mi crea un dubbio. 
 
così mi rimanda alla pagina degli script anche le pagine di errore, che
a sua volta dovranno essere gestite nello script della pagina immagino.
 
Poichè mi son trovato tempo fà, che un cliente con prestashop, gli
hanno tirato giù il server mandando una serie di richieste, tipo  DDos,
capisco la praticità di scrivere in un file php tutti gli script che
voglio, ma non è più sicuro impostare regole sul file httpaccess  e
soprattutto più leggero?
 
Enrico 
 

 soprattutto più leggero?
 
Contro il DDoS non c'è difesa che tenga, se non avere una CDN di fronte 
che si smazza il problema. Ce ne sono di ottime, che hanno più banda di 
quanto qualsiasi azienda che non sia Google, Amazon o Microsoft può 
permettersi.
 
Se hai assolutamente bisogno delle prestazioni massime che uno static 
file serving (per le immagini e i css, per esempio) può fornirti, allora 
puoi pensare di affrontare il problema assieme ai sistemisti, ma fino a 
quel punto non preoccuparti troppo.
 
Bye.
 

 
 
Grazie, molto chiaro.
 
Enrico