Newsgroup: it.lavoro.professioni.webmaster
Titolo: mod_rewrite - era: forse un po' OT - .htaccess

Seguendo il link segnalato e sbirciando in orario piu' decente su Google 
sono arrivato alla conclusione che questa possa essere la forma migliore 
per il file .htaccess:
RewriteEngine On
RewriteRule ^(.*).htm$ $1.php [R=301,L]
Però non ho riscontri...
Ricordo che ho modificato solo le estensioni dei file da htm a php:
www.xxx.ext/pagina.htm > www.xxx.ext/pagina.php
Consigli/suggerimenti?
Grazie
-- 
Marco R.
CTWEB SERVICE
Web: 
www.ctwebservice.net
E-mail: info [at] ctwebservice [dot] net
Messenger: helpdesk_ctwebservice [at] hotmail [dot] it

 
questo è un redirect 301 ed è corretto, puoi comunque confrontarti qui:
http://www.seoconsultants.com/tools/headers.asp
-- 
di lesa in lesa mi dileggio

 
http://www.seoconsultants.com/tools/headers.asp
si, ma non ha effetto.
Grazie per il link!


 Consigli/suggerimenti?
A naso, IMHO è sbagliato, perché stai usando una external redirection 
senza specificare l'URL completo.
Dovrebbe essere piuttosto qualcosa del tipo:
RewriteRule ^(.*).htm$ www.xxx.ext/$1.php [R=301,L]
Ciao
-- 
Marco Ermini
Dubium sapientiae initium. (Descartes)
root@human # mount -t life -o ro /dev/dna /genetic/research
http://www.markoer.org/
 - 
https://www.linkedin.com/in/marcoermini

Però non ho riscontri...
? Vuoi dire che non funziona ?
Ti da' errore? ...o che altro?
-- 
La rovina del mondo sarà l'indifferenza...
...ma chi se fregaaaa!!  :D

 Ti da' errore? ...o che altro?
Nessun errore.. .non succede nulla


 
ma l'engine rewrite l'hai attivato?
i file .htaccess vengono controllati da apache?
-- 
una volta qui era tutto <table>

 
ho fatto una verifica con phpinfo() ed il mod_rewrite e' regolarmente 
caricato


 
non si guarda da lě:
nel file .htaccess c'č questo?
RewriteEngine On
RewriteBase /
nel file httpd.conf viene attivato .htaccess?


 nel file httpd.conf viene attivato .htaccess?
mi viene il dubbio... controllo subito


 nel file httpd.conf viene attivato .htaccess?
     AllowOverride era impostato a None
Ora riprovo


caricato
Mi viene un dubbio banale... Hai riscritto i link nel modo "nuovo"?


 
non ho capito...


non ho capito...
Nel senso che i link, nell'html, vanno cambiati. Non avrai più
<a href='site.php?a=ciccio&b=altro' ...>
ma una cosa del genere
<a href='/ciccio/altro.html' ...>
...ovviamente applicato al tuo caso.. ;)


 
io ho <a href='site.htm'> che deve passare a
<a href='site.php'>


<a href='site.php'>
E quando sul browser scrivi 
www.tuosito.it/site.php
 che succede?


 E quando sul browser scrivi 
www.tuosito.it/site.php
 che succede?
mi carica la pagina site.php
A questo punto mi sento confuso ;-) e non capisco se ci siamo capiti o 
semplicemente non ho inteso io il da farsi.
Breve riepilogo.
Avevo un sito con pagine htm che dovevo passare in php e così ho fatto.
Attualmente sul server ho laversione della stessa pagina sia in htm che 
in php, ma vorrei eliminare le vecchie in htm
Queste sono già indicizzate e vorrei pertanto che sia Google che i 
visitatori prendessero in considerazione le nuove in php.
Prendo in considerazione il mod_rewrite. Creo il mio bel .htaccess con 
il seguente contenuto:
RewriteEngine On
RewriteBase /
RewriteRule ^(.*).htm$ 
http://www.nomesito.ext/$1.php
 [R=301,L]
Ricordo che non devo semplificare nessun url dinamico. Devo solo 
indirizzare l'utente ed i motori sulle nuove pagine php.
In cosa sbaglio?


 Nessun errore.. .non succede nulla
Come ti ho spiegato nel mio post, ti hanno dato un suggerimento 
sbagliato. Non puoi usare una external redirect senza dargli un URL.
mod_rewrite può sembrare dannatissimo woo-doo, devi prima capirne i 
principi :-)


 principi :-)
L'ho fatto... ma nulla
RewriteEngine On
RewriteBase /
RewriteRule ^(.*).htm$ 
http://www.nomesito.ext/$1.php
 [R=301,L]
-- 


 In cosa sbaglio?
Adesso è più chiaro. Ti manca totalmente la condizione :-)
Prova così e dimmi se è meglio:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} /(.*).htm$
RewriteRule . /%1.php [L]
oppure
RewriteRule . 
http://www.miosito.ext/%1.php
 [R=301,L]
Nota che nel primo caso, l'intenzione è di mascherare i file .php con i 
vecchi nomi .htm. Ovvero, per chi è "esterno" i nomi dei file non sono 
cambiati.
Queste ovviamente sono solo idee; ti consiglio di abilitare il log di 
mod_rewrite e postare qua cosa viene scritto nel log, nel caso che non 
funzioni...


 RewriteRule . 
http://www.miosito.ext/%1.php
 [R=301,L]
ho provato il secondo ed effettivamente qualcosa si muove :-)
Nel senso ora richiamando www.sito.ext/pagina.htm mi compare 
www.sito.ext/.php
Manca la pagina...


 RewriteRule . 
http://www.miosito.ext/%1.php
 [R=301,L]
la prima soluzione funziona perfettamente.
La seconda, come segnalato nell'altro post, mi restituisce 
www.sito.ext/.php senza la pagina.
Personalmente opterei per la seconda anche perche' non mi interessa 
mascherare il php conservando la vecchia htm.


 Manca la pagina...
Probabilmente:
RewriteRule ^(.+)\.htm$ 
http://www.miosito.ext/%1.php
 [R=301,L,NC]
'bye

Agostino De Matteis ha scritto:

grazie per la segnalazione.
Un chiarimento: optanto per questa soluzione, devo mantenere sul server 
i file htm senza cancellarli...


Agostino De Matteis ha scritto:

stesso risultato... www.miosito.ext/.php


 RewriteRule . 
http://www.miosito.ext/%1.php
 [R=301,L]
ingenuita' mia...
la seconda opzione era sempre da inserire tenendo sempre la riga che 
detta la condizione immagino...
quindi funziona regolarmente anche la seconda, l'unico problema e' che 
www.sito.ext/pagina.htm viene replicato con www.sito.ext//pagina.php con 
la doppia slash
Mi rendo conto di avere grosse lacune sul mod_rewrite e chiedo venia :-(


 i file htm senza cancellarli...
Sě, ma in teoria puoi tenere un file di zero byte... ed essere meglio 
indicizzato dai motori - che preferiscono pagine "supposte" statiche a 
quelle dinamiche.


 quelle dinamiche.
Molto gentile... il tuo/vostro aiuto e' stato preziosissimo.
Hai mica idea perche' richiamando www.sito.ext/pagina.htm il redirect 
avviene regolarmente ma in questa forma
www.sito.ext//pagina.php con il doppio slash?
Grazie


 Grazie
Postami il tuo attuale .htaccess, sorry ma mi sono perso ;-)


 Postami il tuo attuale .htaccess, sorry ma mi sono perso ;-)
immagino ;-)
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} /(.*).htm$
RewriteRule . 
http://www.ctwebservice.net/%1.php
 [R=301,L]
anche sostituento l'ultima riga con
RewriteRule ^(.+)\.htm$ 
http://www.miosito.ext/%1.php
 [R=301,L,NC]
il risultato non cambia...


 il risultato non cambia...
Perché il "%1" viene sostituito con la condizione della rewritecond, che 
è "/(.*).htm$". Quindi:
http://www.miosito.ext/%1.php
 => 
http://www.miosito.ext//
<pagina>.php
Puoi probabilmente sia eliminare lo slash della rewritecond, sia quello 
della rewriterule (
http://www.miosito.ext
%1.php). Fai qualche 
esperimento, ma soprattutto abilita il log di debug del mod_rewrite, 
così capisci come ragiona :-)
Ciao


 cosě capisci come ragiona :-)
Aggiornamento notturno :-)
la presenza o meno degli slash non cambia il risultato.
Cio' che invece mi ha permesso di eliminare lo slash superfluo e' la 
modifica nel rewritecond da REQUEST_FILENAME a REQUEST_URI


 modifica nel rewritecond da REQUEST_FILENAME a REQUEST_URI
E' cosě che si fa - picchia e mena, che alla fine funge ;-)


 E' cosě che si fa - picchia e mena, che alla fine funge ;-)
botte da orbi, ma alla fine ha capito chi comanda ;-)
Grazie ancora!
