apache - mod_rewrite, questo sconosciuto :)

Forum dedicato alla programmazione.

Moderatore: Staff

Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Avatar utente
conraid
Staff
Staff
Messaggi: 13631
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Re: apache - mod_rewrite, questo sconosciuto :)

Messaggio da conraid »

JohnnyMnemonic ha scritto:Eh no. Non lo vede proprio nessuno :|
Ma nemmeno tramite applicazione?

Avatar utente
JohnnyMnemonic
Staff
Staff
Messaggi: 2733
Iscritto il: dom 5 set 2004, 0:00
Nome Cognome: Giuseppe Palmiotto
Slackware: 14.0
Kernel: 3.5.5-thanatos
Località: Bologna
Contatta:

Re: apache - mod_rewrite, questo sconosciuto :)

Messaggio da JohnnyMnemonic »

No, nemmeno così

Avatar utente
conraid
Staff
Staff
Messaggi: 13631
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Re: apache - mod_rewrite, questo sconosciuto :)

Messaggio da conraid »

Beppe, ho fatto una prova

allora

il mio server è slack.blank.home

il file php è nella directory html e si chiama prova.php

Codice: Seleziona tutto

http://slack.blank.home/html/prova.php
ed è fatto così

Codice: Seleziona tutto

<?php
$FILEDASCARICARE="documenti/prova.txt";
header("Location: $FILEDASCARICARE ");
?>
come vedi ho la directory documenti con dentro prova.txt

Se in documenti metto questo .htaccess

Codice: Seleziona tutto

SetEnvIfNoCase Referer "^http://slack.blank.home/" ok_img
SetEnvIfNoCase Referer "^http://slack.blank.home$" ok_img
<filesmatch "\.*$">
  Order Deny,Allow
  deny from all
  Allow from env=ok_img
</filesmatch>
allora tramite prova.php arrivo a prova.txt, se invece scrivo direttamente nel browser http :// slack.blank.home/html/documenti/prova.txt
mi da errore 403

Il problema è che una volta arrivato da prova.php poi me lo vede anche direttamente (finché non cambio pagina, esco dal browser, etc...), perché mantiene lo stesso referrer

Avatar utente
JohnnyMnemonic
Staff
Staff
Messaggi: 2733
Iscritto il: dom 5 set 2004, 0:00
Nome Cognome: Giuseppe Palmiotto
Slackware: 14.0
Kernel: 3.5.5-thanatos
Località: Bologna
Contatta:

Re: apache - mod_rewrite, questo sconosciuto :)

Messaggio da JohnnyMnemonic »

Ok ma una volta che arrivi a prova.php (nel mio caso) sei loggato nell'applicativo quindi puoi fare come vuoi

Solo che a me non funziona, può essere un problema a monte di httpd.conf?

Avatar utente
conraid
Staff
Staff
Messaggi: 13631
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Re: apache - mod_rewrite, questo sconosciuto :)

Messaggio da conraid »

JohnnyMnemonic ha scritto:Ok ma una volta che arrivi a prova.php (nel mio caso) sei loggato nell'applicativo quindi puoi fare come vuoi

Solo che a me non funziona, può essere un problema a monte di httpd.conf?
Non so che dirti, speriamo che arrivi qualcuno più esperto a trovare una soluzione.

Avatar utente
danix
Staff
Staff
Messaggi: 3289
Iscritto il: ven 27 ott 2006, 19:32
Nome Cognome: Danilo M.
Slackware: 64 current
Kernel: 6.12.13 x86_64
Desktop: i3
Località: Verona (VR)
Contatta:

Re: apache - mod_rewrite, questo sconosciuto :)

Messaggio da danix »

Premesso che nessuna regola ha funzionato...
conraid ha scritto:Prova così

Codice: Seleziona tutto

RewriteRule ^/([a-z]+)/([a-z]+)/ http://www.miosito.com/index.php?p=$1&section=$2 [NC,L]
Che dovrebbe significare:
2 variabili costituite da qualsiasi lettera e separate da uno slash, giusto??
conraid ha scritto:Puoi usare i redirect

Codice: Seleziona tutto

Redirect 301 /index.php$  http://www.miosito.com/
Redirect 301 /index.php?p=home$  http://www.miosito.com/
o, se non vuoi usare un redirect (che sarebbe più giusto al cambio di url di una pagina) sempre i RewriteRule

Codice: Seleziona tutto

RewriteRule ^/index.php$ http://www.miosito.com/ [NC,L]
RewriteRule ^/index.php?p=home$ http://www.miosito.com/ [NC,L]

Per le opzioni ( [NC] per esempio) guardare http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html

p.s.
stai attento se qualche espressione regolare sballa, sono solo esempi scritti in fretta
Se usi
RewriteRule ^/index.php$ http://www.miosito.com/ [NC,L]
RewriteRule ^/index.php?p=home$ http://www.miosito.com/ [NC,L]
o le metti per prime, o togli l'opzione L (last) alla prima
a questo punto mi viene il dubbio che mod_rewrite non sia abilitato, però ieri l'ho utilizzato con una guida che ho trovato su internet...


PS
toglietemi un altro dubbio... io ho comunicato a google una sitemap.xml, in cui gli indirizzi sono dinamici (query string e quant'altro), mi conviene adesso (in ottica SEO) modificare gli url?? non vorrei che google rilevasse dei contenuti duplicati e spedisse il mio sito a pagina 1700000 di ogni ricerca...
Ancora un dubbio... eventualmente io decida (e riesca) ad usare mod_rewrite, a livello di script php non dovrò modificare nulla, giusto?? mod_rewrite agirà semplicemente sulle pagine presentate all'utente... per capirci meglio, se in una pagina ho una QS p=pagina&var=value&var2=value2, da un altra parte potrò linkare quella pagina con la QS o dovrò usare l'url generato da mod_rewrite??


Grazie mille per l'aiuto...
danix
danix ha scritto:non sono molto presente sul forum, e di ciò mi scuso con tutti

Avatar utente
conraid
Staff
Staff
Messaggi: 13631
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Re: apache - mod_rewrite, questo sconosciuto :)

Messaggio da conraid »

danix85 ha scritto:Premesso che nessuna regola ha funzionato...
[...]
a questo punto mi viene il dubbio che mod_rewrite non sia abilitato, però ieri l'ho utilizzato con una guida che ho trovato su internet...
Come ti ho detto sono esempi, cerca la tua "regola"

comunque sì, erano due variabili costituite da qualsiasi lettera, che nell'altra espressione replichi con $1 e $2

tanto per capirsi

RewriteRule ^(.*)$ /index.php?id=$1 [L]

fa sì (a questo punto dico "dovrebbe far sì") che
www.pippo.com/index.php?id=pippo
diventi
www.pippo.com/pippo

danix85 ha scritto: toglietemi un altro dubbio... io ho comunicato a google una sitemap.xml, in cui gli indirizzi sono dinamici (query string e quant'altro), mi conviene adesso (in ottica SEO) modificare gli url?? non vorrei che google rilevasse dei contenuti duplicati e spedisse il mio sito a pagina 1700000 di ogni ricerca...
A google dagli sempre gli indirizzi corretti, cioè quelli visualizzati a browser
danix85 ha scritto: Ancora un dubbio... eventualmente io decida (e riesca) ad usare mod_rewrite, a livello di script php non dovrò modificare nulla, giusto?? mod_rewrite agirà semplicemente sulle pagine presentate all'utente... per capirci meglio, se in una pagina ho una QS p=pagina&var=value&var2=value2, da un altra parte potrò linkare quella pagina con la QS o dovrò usare l'url generato da mod_rewrite??
la seconda che hai detto
se il passaggio è tramite http, cioè se invochi una pagina php e pensi di passarli variabili tramite $_GET, apache cambierà prima l'url, quindi devi prevedere un metodo per capire che quelle sono variabili e non directory

Avatar utente
danix
Staff
Staff
Messaggi: 3289
Iscritto il: ven 27 ott 2006, 19:32
Nome Cognome: Danilo M.
Slackware: 64 current
Kernel: 6.12.13 x86_64
Desktop: i3
Località: Verona (VR)
Contatta:

Re: apache - mod_rewrite, questo sconosciuto :)

Messaggio da danix »

conraid ha scritto:RewriteRule ^(.*)$ /index.php?id=$1 [L]
questa mi da Internal Server Error (500)

se la modifico così:
RewriteRule ^([^/]+)$ /index.php?id=$1 [L]
firefox mi dice che la pagina non redireziona in modo corretto, se invece ci aggiungo lo slash finale non succede nulla, è come se la regola non ci fosse...


continuo a capirci sempre meno... :(
danix
danix ha scritto:non sono molto presente sul forum, e di ciò mi scuso con tutti

Avatar utente
conraid
Staff
Staff
Messaggi: 13631
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Re: apache - mod_rewrite, questo sconosciuto :)

Messaggio da conraid »

http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html

l'unica è studiarsi la documentazione

se ti da 500 significa che c'era un errore di sintassi, era un esempio al volo

samiel
Staff
Staff
Messaggi: 5511
Iscritto il: ven 16 gen 2004, 0:00
Nome Cognome: Mauro Sacchetto
Slackware: 13.0
Kernel: 2.26
Desktop: KDE
Distribuzione: anche Debian
Località: Venezia

Re: apache - mod_rewrite, questo sconosciuto :)

Messaggio da samiel »

Mi ricollego alla prima parte della discussione.
Se ho un sito in un hosting e pertanto non posso
gestirmi io apache, ma ipotizzando comunque
che mod_rewrite sia attivo, che cosa devo
inserire nell'.htaccess da mettere nella root del sito?

Grazie
M.

Avatar utente
conraid
Staff
Staff
Messaggi: 13631
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Re: apache - mod_rewrite, questo sconosciuto :)

Messaggio da conraid »

samiel ha scritto:Mi ricollego alla prima parte della discussione.
Se ho un sito in un hosting e pertanto non posso
gestirmi io apache, ma ipotizzando comunque
che mod_rewrite sia attivo, che cosa devo
inserire nell'.htaccess da mettere nella root del sito?

Grazie
M.

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule (.*) http://www.miosito.com/$1
</IfModule>

dipende da cosa devi fare comunque

samiel
Staff
Staff
Messaggi: 5511
Iscritto il: ven 16 gen 2004, 0:00
Nome Cognome: Mauro Sacchetto
Slackware: 13.0
Kernel: 2.26
Desktop: KDE
Distribuzione: anche Debian
Località: Venezia

Re: apache - mod_rewrite, questo sconosciuto :)

Messaggio da samiel »

Dovevo fare in modo che venisse riconosciuto l'indirizzo con www
(gioè che digitando l'indirizzo senza, si aprisse comunque col www
e ieri sera ho messo in .htaccess questo codice:

Codice: Seleziona tutto

RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.giovannifornero\.net [NC]
RewriteRule ^(.*)$ http://www.giovannifornero.net/$1 [L,R=301]
M.

Avatar utente
conraid
Staff
Staff
Messaggi: 13631
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Re: apache - mod_rewrite, questo sconosciuto :)

Messaggio da conraid »

samiel ha scritto:Dovevo fare in modo che venisse riconosciuto l'indirizzo con www
(gioè che digitando l'indirizzo senza, si aprisse comunque col www
e ieri sera ho messo in .htaccess questo codice:

Codice: Seleziona tutto

RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.giovannifornero\.net [NC]
RewriteRule ^(.*)$ http://www.giovannifornero.net/$1 [L,R=301]
M.
E non funziona?
io sinceramente invece della negazione, farei il contrario

Codice: Seleziona tutto

RewriteEngine on
RewriteCond %{HTTP_HOST} ^giovannifornero.net [NC]
RewriteRule (.*) http://www.giovannifornero.net/$1 [L,R=301]
Come puoi vedere dalla documentazione
http://httpd.apache.org/docs/2.2/rewrit ... html#regex
anche se il punto equivale ad un qualsiasi caratteri nei nomi dei domini lo lasciano stare così

ma funzione in qualsiasi modo, anche quello che hai messo tu dovrebbe funzionare

samiel
Staff
Staff
Messaggi: 5511
Iscritto il: ven 16 gen 2004, 0:00
Nome Cognome: Mauro Sacchetto
Slackware: 13.0
Kernel: 2.26
Desktop: KDE
Distribuzione: anche Debian
Località: Venezia

Re: apache - mod_rewrite, questo sconosciuto :)

Messaggio da samiel »

No, funziona!
Però ho un secondo problema.
È possibile trasformare:
http://www.giovannifornero.net/index.php?pagina=home
in:
http://www.giovannifornero.net
? In modo che andando sulla home dal menu
compaia l'indirizzo della radice del sito
e non tutta la stringa di PHP?

Mille grazie
M.

samiel
Staff
Staff
Messaggi: 5511
Iscritto il: ven 16 gen 2004, 0:00
Nome Cognome: Mauro Sacchetto
Slackware: 13.0
Kernel: 2.26
Desktop: KDE
Distribuzione: anche Debian
Località: Venezia

Re: apache - mod_rewrite, questo sconosciuto :)

Messaggio da samiel »

Ho provato una cosa banale come:

Codice: Seleziona tutto

RewriteRule http://www.giovannifornero.net/index.php?pagina=home$ http://www.giovannifornero.net
ma non funzia...

M.

Rispondi