Repository 32bit  Forum
Repository 64bit  Wiki

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.

Re: apache - mod_rewrite, questo sconosciuto :)

Messaggioda conraid » gio set 25, 2008 9:35

JohnnyMnemonic ha scritto:Eh no. Non lo vede proprio nessuno :|


Ma nemmeno tramite applicazione?
Avatar utente
conraid
Staff
Staff
 
Messaggi: 12019
Iscritto il: mer lug 13, 2005 23:00
Località: Livorno
Nome Cognome: Corrado Franco
Slackware: current

Re: apache - mod_rewrite, questo sconosciuto :)

Messaggioda JohnnyMnemonic » gio set 25, 2008 9:42

No, nemmeno così
Avatar utente
JohnnyMnemonic
Staff
Staff
 
Messaggi: 2732
Iscritto il: sab set 04, 2004 23:00
Località: Bologna
Nome Cognome: Giuseppe Palmiotto
Slackware: 14.0
Kernel: 3.5.5-thanatos

Re: apache - mod_rewrite, questo sconosciuto :)

Messaggioda conraid » gio set 25, 2008 9:44

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
conraid
Staff
Staff
 
Messaggi: 12019
Iscritto il: mer lug 13, 2005 23:00
Località: Livorno
Nome Cognome: Corrado Franco
Slackware: current

Re: apache - mod_rewrite, questo sconosciuto :)

Messaggioda JohnnyMnemonic » gio set 25, 2008 9:56

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
JohnnyMnemonic
Staff
Staff
 
Messaggi: 2732
Iscritto il: sab set 04, 2004 23:00
Località: Bologna
Nome Cognome: Giuseppe Palmiotto
Slackware: 14.0
Kernel: 3.5.5-thanatos

Re: apache - mod_rewrite, questo sconosciuto :)

Messaggioda conraid » gio set 25, 2008 10:33

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
conraid
Staff
Staff
 
Messaggi: 12019
Iscritto il: mer lug 13, 2005 23:00
Località: Livorno
Nome Cognome: Corrado Franco
Slackware: current

Re: apache - mod_rewrite, questo sconosciuto :)

Messaggioda danix » gio set 25, 2008 14:03

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...
Avatar utente
danix
Staff
Staff
 
Messaggi: 3280
Iscritto il: ven ott 27, 2006 18:32
Località: Siderno (RC)
Nome Cognome: Danilo M.
Slackware: 64 14.0
Kernel: 3.2.29
Desktop: fluxbox

Re: apache - mod_rewrite, questo sconosciuto :)

Messaggioda conraid » gio set 25, 2008 14:17

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
conraid
Staff
Staff
 
Messaggi: 12019
Iscritto il: mer lug 13, 2005 23:00
Località: Livorno
Nome Cognome: Corrado Franco
Slackware: current

Re: apache - mod_rewrite, questo sconosciuto :)

Messaggioda danix » gio set 25, 2008 15:06

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... :(
Avatar utente
danix
Staff
Staff
 
Messaggi: 3280
Iscritto il: ven ott 27, 2006 18:32
Località: Siderno (RC)
Nome Cognome: Danilo M.
Slackware: 64 14.0
Kernel: 3.2.29
Desktop: fluxbox

Re: apache - mod_rewrite, questo sconosciuto :)

Messaggioda conraid » gio set 25, 2008 15:09

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
Avatar utente
conraid
Staff
Staff
 
Messaggi: 12019
Iscritto il: mer lug 13, 2005 23:00
Località: Livorno
Nome Cognome: Corrado Franco
Slackware: current

Re: apache - mod_rewrite, questo sconosciuto :)

Messaggioda samiel » mer ott 01, 2008 20:18

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.
samiel
Staff
Staff
 
Messaggi: 5500
Iscritto il: ven gen 16, 2004 0:00
Località: Venezia
Nome Cognome: Mauro Sacchetto
Slackware: 13.0
Kernel: 2.26
Desktop: KDE
Distribuzione: anche Debian

Re: apache - mod_rewrite, questo sconosciuto :)

Messaggioda conraid » gio ott 02, 2008 10:17

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
Avatar utente
conraid
Staff
Staff
 
Messaggi: 12019
Iscritto il: mer lug 13, 2005 23:00
Località: Livorno
Nome Cognome: Corrado Franco
Slackware: current

Re: apache - mod_rewrite, questo sconosciuto :)

Messaggioda samiel » gio ott 02, 2008 16:47

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.
samiel
Staff
Staff
 
Messaggi: 5500
Iscritto il: ven gen 16, 2004 0:00
Località: Venezia
Nome Cognome: Mauro Sacchetto
Slackware: 13.0
Kernel: 2.26
Desktop: KDE
Distribuzione: anche Debian

Re: apache - mod_rewrite, questo sconosciuto :)

Messaggioda conraid » gio ott 02, 2008 17:02

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
Avatar utente
conraid
Staff
Staff
 
Messaggi: 12019
Iscritto il: mer lug 13, 2005 23:00
Località: Livorno
Nome Cognome: Corrado Franco
Slackware: current

Re: apache - mod_rewrite, questo sconosciuto :)

Messaggioda samiel » gio ott 02, 2008 17:10

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: 5500
Iscritto il: ven gen 16, 2004 0:00
Località: Venezia
Nome Cognome: Mauro Sacchetto
Slackware: 13.0
Kernel: 2.26
Desktop: KDE
Distribuzione: anche Debian

Re: apache - mod_rewrite, questo sconosciuto :)

Messaggioda samiel » gio ott 02, 2008 17:25

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.
samiel
Staff
Staff
 
Messaggi: 5500
Iscritto il: ven gen 16, 2004 0:00
Località: Venezia
Nome Cognome: Mauro Sacchetto
Slackware: 13.0
Kernel: 2.26
Desktop: KDE
Distribuzione: anche Debian

PrecedenteProssimo

Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite