- Home
- Categorie
- Coding e Sistemistica
- Hosting, Server e Domini
- Url rewrite con apache che gira sotto windows
-
Ciao gustoinrete,
non credo di aver capito correttamente il tuo problema...però non mi cambia il nome sulla barra degli indirizzi (ma la pagina funziona correttamente)
il mod_rewrite è uno strumento che non cambia ciò che è scritto sulla barra degli indirizzi ma che ti consente di raggiungere una determinata url, anche digitandone un'altra. Nell'esempio fatto da te, puoi raggiungere la pagina **scheda_articolo.php?ida... **anche digitando semplicemente titolo_articolo.html.
Normalmente viene utilizzato per far digeririe meglio le URL ai motori di ricerca, se hai una url del tipo:
pippo.php?id=13
potresti riscriverla come:
13-topolino.htm
con una semplice regola mod_rewrite del tipo:
RewriteRule ^([0-9]+)-topolino.html pippo.php?ida=$1Se invece quello che ti occorre è far si che dopo aver digitato pippo.htm?id=13 il browser ti rimandi in automatico alla pagina topolino.htm quello che ti serve è un semplice redirect.
Spero di esserti stato d'aiuto.
-
ti ringrazio per la risposta e per l'ottima delucidazione (necessaria direi visto che non ci avevo capito un granchè )
ma provando ad accedere alla pagina
http:// localhost/imm/titolo_articolo.html
mi dice pagina web non trovatacosa devo settare per far si che funzioni ?
considera che lanciando la phpinfo() il modulo mod_rewrite è tra quelli caricati
-
Verifica che il file httpd.conf (generalmente nella cartella *...\apache\conf*), abbia la direttiva:
AccessFileName .htaccess
e che AllowOverride sia impostato su All piuttosto che su None.Facci sapere...;)
-
allora ***AccessFileName .htaccess ***c'è
per quanto riguarda il secondo consiglio nel file httpd.conf ho trovato diverse occorrenze ***AllowOverride ***
il primo era impostato a None e l'ho modificato seguendo le tue indicazioni
<Directory />
Options FollowSymLinks ExecCGI Indexes
AllowOverride All
Order deny,allow
Deny from all
Satisfy all
</Directory>poi allowoverwrite compare altre volte in alcuni casi è a none in altre a all
si riferiscono a delle directory particolari come ad esempio
<Directory "C:/AppServ/Apache2.2/icons">
oppure
<Directory "C:/AppServ/www/cgi-bin">comunque riavviando apache non riesco ad accedere alla pagina mi dice pagina non trovata
-
Ok, cerchiamo di isolare il problema: creati nella cartella imm un file chiamato pippo.htm, scrivici dentro qualcosa e verifica che tramite browser riesci a vedere quello che ci hai scritto.
Quindi crea un file .htaccess e scrivici dentro:
**RewriteEngine On **
**RewriteRule ^topolino.htm pippo.htm **Prova ora a caricare da browser topolino.htm: se ti restituisce gli stessi contenuti del file pippo.htm ok, altrimenti hai un problema di configurazione di apache.
-
scusa per il ritardo ma non ho ricevuto la notifica via mail della tua risposta
allora non funziona mi dice pagina non trovata
una cosa il file htaccess deve essere dentro la cartella imm vero ?
-
Si, deve essere dentro la cartella in cui richiami il file (non in generale, solo nell'esempio).
Detto ciò direi proprio che non ti funziona il modrewrite...Sicuro di aver chiamato il file .htaccess con il punto (.) davanti?
Inoltre la direttiva:
LoadModule rewrite_module modules/mod_rewrite.so
è presente nel file httpd.conf? Mi raccomando controlla che non sia preceduta dal cancelletto (#).Ti allego il mio httpd.conf, prova a fare un confronto con il tuo... e facci sapere!
-
il punto davanti a htaccess non posso metterlo penso sia un problema di windows xp
LoadModule rewrite_module modules/mod_rewrite.so
questo c'è e non ha cancelletto
-
@gustoinrete said:
il punto davanti a htaccess non posso metterlo penso sia un problema di windows xp
Se hai lasciato
AccessFileName .htaccess
il problema è qui! togli da httpd.conf il punto (.) davanti a tutti i richiami di htaccess. Praticamente apache cerca .htaccess mentre tu gli dai htaccess, un file dal nome diverso...Comunque se usi cuteFTP, da lì riesci sotto XP a rinominare un file anteponendo il punto (.):D
-
sono in locale a fare i miei test
ho tolto il punto davanti alla direttiva AccessFileName
facendo il test topolino pippo non funziona... pagina non trovata
bhooooo
-
@gustoinrete said:
sono in locale a fare i miei test
Con cuteFTP, la finestra di sx (tipicamente) esplora le risorse locali e consente di rinominare i file...
@gustoinrete said:
ho tolto il punto davanti alla direttiva AccessFileName
E davanti agli altri riferimenti? Devi fare trova/sostituisci in modo da eliminare il punto davanti ad ogni richiamo di htaccess... quindi riavvia tutto.
-
ma nell'httpd.conf io ho solo quella voce che richiama .htaccess
poi compare sotto forma di testo descrittivo come ad esempio qui# AllowOverride controls what directives may be placed in .htaccess files. # It can be "All", "None", or any combination of the keywords: # Options FileInfo AuthConfig Limit #
oppure
The following lines prevent .htaccess and .htpasswd files from being
viewed by Web clients.
o ancora
The directive above can be placed in individual <Directory> blocks or the
.htaccess file, with either the 'registry' (Windows behavior) or 'script'
(Unix behavior) option, and will override this server default option.
-
Hai verificato di avere il file mod_rewrite.so nella cartella *apache\modules*?
Hai riavviato apache?Se non risolvi ti sposto nella sezione dedicata al Web Server sperando di trovare maggior fortuna!
-
certo c'è
e ho sempre fatto "restart apache" ad ogni modifica di httpd.conf
-
non so se possa essere d'aiuto ma tutto il pacchetto l'ho installato con AppServ
la directory sul mio pc è C:\AppServ\Apache2.2
non so davvero cosa fare per fare qualche semplice test con il mod rewrite
-
@gustoinrete said:
salve sto facendo alcune prove stupidissime con il mod_rewrite su apache che gira sotto windows...
allora la struttura del sito dove sto facendo le prove è la seguente
http://localhost/imm/scheda_articolo.php?ida=2il file htaccess l'ho messo nella directory http://localhost/imm/
e il file è molto semplice
RewriteEngine on
RewriteRule ^titolo_articolo.html scheda_articolo.php?ida=$1&%{QUERY_STRING}mi bastava fare una prova
però non mi cambia il nome sulla barra degli indirizzi (ma la pagina funziona correttamente)
avviso che il mod_rewrite è attivo tra i vari moduli (l'ho verificato eseguendo phpinfo())la sintassi è sbagliata....
dev'essere RewriteRule ^titolo_articolo.html$ scheda_articolo.php?ida=$0
non capisco il senso di quel {QUERY_STRING} alla fine, così facendo invalidi solo la query string da passare a scheda_articolo.php
inoltre usando ^titolo_articolo.html$ la variabile $1 sarà vuota perchè l'espressione regolare genera un unico gruppo
nel tuo caso devi usare $0 la quale conterrà il nome della pagina digitata nel browser, nome che sarà disponibile nello script php sotto la variabile ida
-
quell'esempio è stato abbandonato da un bel pezzo
non riesco nemmeno a far girare questa
**RewriteEngine On
RewriteRule ^topolino.htm pippo.htm **ci sono dei problemi con apache
-
@gustoinrete said:
quell'esempio è stato abbandonato da un bel pezzo
non riesco nemmeno a far girare questa
**RewriteEngine On
RewriteRule ^topolino.htm pippo.htm **ci sono dei problemi con apache
c'è un errore di sintassi anche in questa....
l'espressione regolare deve iniziare con ^ e finire con $
quindi dev'essere RewriteRule ^topolino.htm$ pippo.htm
-
l'ho modificata
RewriteRule ^topolino.htm$ pippo.htm
ma comunque mi dice file non trovato se provo a collegarmi a
http://localhost/imm/topolino.htm
-
@gustoinrete said:
l'ho modificata
RewriteRule ^topolino.htm$ pippo.htm
ma comunque mi dice file non trovato se provo a collegarmi a
http://localhost/imm/topolino.htma questo punto mi viene un dubbio, ma Apache è in ascolto sulla porta 80 ?
se provi a fare http://localhost/ cosa esce?