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: 12727
Iscritto il: gio lug 14, 2005 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Località: Livorno
Contatta:

Re: apache - mod_rewrite, questo sconosciuto :)

Messaggioda conraid » gio set 25, 2008 10:35

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


Ma nemmeno tramite applicazione?

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

Re: apache - mod_rewrite, questo sconosciuto :)

Messaggioda JohnnyMnemonic » gio set 25, 2008 10:42

No, nemmeno così

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

Re: apache - mod_rewrite, questo sconosciuto :)

Messaggioda conraid » gio set 25, 2008 10: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
JohnnyMnemonic
Staff
Staff
Messaggi: 2733
Iscritto il: dom set 05, 2004 0:00
Nome Cognome: Giuseppe Palmiotto
Slackware: 14.0
Kernel: 3.5.5-thanatos
Località: Bologna
Contatta:

Re: apache - mod_rewrite, questo sconosciuto :)

Messaggioda JohnnyMnemonic » gio set 25, 2008 10: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
conraid
Staff
Staff
Messaggi: 12727
Iscritto il: gio lug 14, 2005 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Località: Livorno
Contatta:

Re: apache - mod_rewrite, questo sconosciuto :)

Messaggioda conraid » gio set 25, 2008 11: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
danix
Staff
Staff
Messaggi: 3287
Iscritto il: ven ott 27, 2006 19:32
Nome Cognome: Danilo M.
Slackware: 64 14.1
Kernel: 4.4.0
Desktop: kde4
Località: Siderno (RC)
Contatta:

Re: apache - mod_rewrite, questo sconosciuto :)

Messaggioda danix » gio set 25, 2008 15: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...
danix

myself ha scritto:non sono molto presente sul forum, e di ciò mi scuso con tutti

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

Re: apache - mod_rewrite, questo sconosciuto :)

Messaggioda conraid » gio set 25, 2008 15: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
danix
Staff
Staff
Messaggi: 3287
Iscritto il: ven ott 27, 2006 19:32
Nome Cognome: Danilo M.
Slackware: 64 14.1
Kernel: 4.4.0
Desktop: kde4
Località: Siderno (RC)
Contatta:

Re: apache - mod_rewrite, questo sconosciuto :)

Messaggioda danix » gio set 25, 2008 16: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... :(
danix

myself ha scritto:non sono molto presente sul forum, e di ciò mi scuso con tutti

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

Re: apache - mod_rewrite, questo sconosciuto :)

Messaggioda conraid » gio set 25, 2008 16: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

samiel
Staff
Staff
Messaggi: 5510
Iscritto il: ven gen 16, 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 :)

Messaggioda samiel » mer ott 01, 2008 21: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.

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

Re: apache - mod_rewrite, questo sconosciuto :)

Messaggioda conraid » gio ott 02, 2008 11: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

samiel
Staff
Staff
Messaggi: 5510
Iscritto il: ven gen 16, 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 :)

Messaggioda samiel » gio ott 02, 2008 17: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.

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

Re: apache - mod_rewrite, questo sconosciuto :)

Messaggioda conraid » gio ott 02, 2008 18: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

samiel
Staff
Staff
Messaggi: 5510
Iscritto il: ven gen 16, 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 :)

Messaggioda samiel » gio ott 02, 2008 18: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: 5510
Iscritto il: ven gen 16, 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 :)

Messaggioda samiel » gio ott 02, 2008 18: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.


Torna a “Programmazione”

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite