• User Newbie

    Domanda su file .htaccess

    Spero che questa sia la sezione giusta.
    Ho una pagina, ad esempio: prova.php.
    Questa pagina al trasformo in prova con un regola di rewrite:
    [CODE][RewriteRule ^prova$ /prova.php /CODE]
    Il problema è che in realtà la pagina non viene rasformata in prova, ma semplicemente abilito la parola prova e la faccio corrispondere a quella pagina,
    ovvero scrivendo sito.it/prova ottengo l'apertura di prova.php, con l'indirizzo modificato in sito.it/prova, se però scrivo sito.it/prova.php la pagina
    la pagina aperta è sempre prova.php ma l'indirizzo che vedo è prova.php.

    L'effetto che vorrei ottenere è il seguente:
    1)scrivendo sito.it/prova si deve aprire sito.it/prova.php, mantenendo nell'indirizzo la dicitura sito.it/prova;
    2)scrivendo sito.it/prova.php si deve aprire la pagina prova.php, ma il link sulla barrra degli indirizzi deve cambiare in sito.it/prova.
    Sapete come si ottiene questo effetto?


  • User Attivo

    Aggiungere un redirect sempre con l'htaccess da prova.php a prova?


  • User Newbie

    @Marinski said:

    Aggiungere un redirect sempre con l'htaccess da prova.php a prova?
    Ho provato così:

    
    RewriteRule ^prova$  /prova.php 
    RewriteRule ^prova.php$  /prova 
    
    

    Il problema è che và in loop e fà richieste infinite di cambio link...
    Quasi scordavo di scrivere che ho questa situazione anche se provo con un redirect 301.


  • User Attivo

    L'avevo fatto anch'io per un vecchio sito che ora ho rispolverato per vedere il codice del .htaccess... questo è il codice che ho trovato vedi se funziona!

    
    <IfModule mod_rewrite.c>
    
    RewriteEngine on
    RewriteBase /
    RewriteCond %{HTTP_HOST} !^www\.
    RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
    
    
    RewriteCond %{REQUEST_URI} (.*)/$
    RewriteCond %{REQUEST_FILENAME}\.html -f
    RewriteRule (.*)/$ $1.html 
    
    
    RewriteCond %{REQUEST_URI} (.*)/$
    RewriteCond %{REQUEST_FILENAME}\.php -f
    RewriteRule (.*)/$ $1.php 
    
    
    RewriteCond %{REQUEST_URI} (.*)/$
    RewriteCond %{REQUEST_FILENAME}\.cgi -f
    RewriteRule (.*)/$ $1.cgi 
    
    
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME}\.html -f 
    RewriteCond %{REQUEST_FILENAME}\.php -f 
    RewriteCond %{REQUEST_FILENAME}\.cgi -f
    RewriteRule .* %{REQUEST_FILENAME}/ [R=301,L]
    
    
    </IfModule>
    
    

    trasforma i file.php, .html e .cgi in file/


  • User Newbie

    L'ho provato e ho capito come funziona, in pratica se ho una pagina con indirizzo: /prova/prova1.php posso richiamarla anche scrivendo /prova/prova1.
    Molto carino perchè agisce su tutto, io invece agivo quasi pagina per pagina.
    Tuttavia se scrivo /prova/prova1.php l'indirizzo sulla barra rimane invariato, non si trasforma all'invio in /prova/prova1.
    Come faccio senza creare loop?