• User Attivo

    Redirect 301 con htaccess da .html a formato directory

    Ciao ragazzi,

    ho cercato in giro ma tutti i codici che ho trovato non hanno funzionato, cosa devo inserire nel file .htaccess per fare un redirect permanente e cambiare l'estensione di tutte le url del mio sito da .html al formato directory (slash inclusa)?

    Faccio un esempio per chiarire meglio:
    da
    nomesito.com/cartella/url.html
    a
    nomesito.com/cartella/url/

    Grazie anticipatamente 🙂


  • User Attivo

    Ciao, non l'ho testato però dovrebbe funzionare se messo nel .htaccess della directory:

    
    RewriteEngine On
    RewriteRule ^(.+)\.htm$ example.com/directory/$1/ [R=301,NC]
    
    

  • User Attivo

    Ciao Fregior,
    e grazie per l'aiuto ma non funziona.

    Comunque per precisare meglio la struttura che ha il mio sito è:
    nomesito.com/cartella/sottocartella/articolo.html
    e la voglio
    nomesito.com/cartella/sottocartella/articolo/

    Il fatto che non funzioni nessuno dei tanti codici provati mi fa pensare che forse devono essere adattati al mio .htaccess:

    ##
    # @version $Id: htaccess.txt 10492 2008-07-02 06:38:28Z ircmaxell $
    # @package Joomla
    # @copyright Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
    # @license http://www.gnu.org/copyleft/gpl.html GNU/GPL
    # Joomla! is Free Software
    ##
    
    
    #####################################################
    #  READ THIS COMPLETELY IF YOU CHOOSE TO USE THIS FILE
    #
    # The line just below this section: 'Options +FollowSymLinks' may cause problems
    # with some server configurations.  It is required for use of mod_rewrite, but may already
    # be set by your server administrator in a way that dissallows changing it in
    # your .htaccess file.  If using it causes your server to error out, comment it out (add # to
    # beginning of line), reload your site in your browser and test your sef url's.  If they work,
    # it has been set by your server administrator and you do not need it set here.
    #
    #####################################################
    
    ##  Can be commented out if causes errors, see notes above.
    Options +FollowSymLinks
    
    #
    #  mod_rewrite in use
    
    RewriteEngine On
    
    RewriteCond %{HTTP_HOST} ^dimensionecasino.com 
    RewriteRule ^(.*)$ http://www.dimensionecasino.com/$1 [L,R=301]
    
    
    ########## Begin - Rewrite rules to block out some common exploits
    ## If you experience problems on your site block out the operations listed below
    ## This attempts to block the most common type of exploit `attempts` to Joomla!
    #
    # Block out any script trying to set a mosConfig value through the URL
    RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|\%3D) 
    # Block out any script trying to base64_encode crap to send via URL
    RewriteCond %{QUERY_STRING} base64_encode.*\(.*\) 
    # Block out any script that includes a <script> tag in URL
    RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
    # Block out any script trying to set a PHP GLOBALS variable via URL
    RewriteCond %{QUERY_STRING} GLOBALS(=|[|\%[0-9A-Z]{0,2}) 
    # Block out any script trying to modify a _REQUEST variable via URL
    RewriteCond %{QUERY_STRING} _REQUEST(=|[|\%[0-9A-Z]{0,2})
    # Send all blocked request to homepage with 403 Forbidden error!
    RewriteRule ^(.*)$ index.php [F,L]
    #
    ########## End - Rewrite rules to block out some common exploits
    
    #  Uncomment following line if your webserver's URL
    #  is not directly related to physical file paths.
    #  Update Your Joomla! Directory (just / for root)
    
    # RewriteBase /
    
    
    ########## Begin - Joomla! core SEF Section
    #
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} !^/index.php
    RewriteCond %{REQUEST_URI} (/|\.php|\.html|\.htm|\.feed|\.pdf|\.raw|/[^.]*)$  
    RewriteRule (.*) index.php
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]
    #
    ########## End - Joomla! core SEF Section
    

    e in più sotto ci sono alcuni redirect fatti a mano da me.

    Grazie ancora 🙂


  • Super User

    Ciao bud,
    prova con questa regola:

    RewriteRule ^(.*).html$ /$1/ [L,NC,R=301]
    

  • User Attivo

    Ciao ayrton,
    grazie mille, funziona alla perfezione! 🙂


  • User

    Ciao ayrton, sto cercando di effettuare l'operazione inversa al codice che hai postato. Cioè da dominio.com/directory/ e dominio.com/directory (senza slash) a dominio.com/directory.html.

    Grazie in anticipo!


  • Super User

    @marco863 said:

    Ciao ayrton, sto cercando di effettuare l'operazione inversa al codice che hai postato. Cioè da dominio.com/directory/ e dominio.com/directory (senza slash) a dominio.com/directory.html.

    Grazie in anticipo!

    Ciao marco863,
    prova cosi:

    
    RewriteRule ^([^/]*)$ /$1.html [L,NC,R=301]
    RewriteRule ^([^/]*)/$ /$1.html [L,NC,R=301]
    
    

  • User

    Ciao ayrton, grazie per la risposta. Sono sicuro che il codice è giusto ma probabilmente sbaglio ad inserirlo all'interno del file .htaccess perchè non riesco a farlo funzionare. Esattamente dove dovrei inserirlo? Ti posto il codice del mio file attualmente funzionante:

    
    RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|\%3D) 
    # Block out any script trying to base64_encode crap to send via URL
    RewriteCond %{QUERY_STRING} base64_encode.*\(.*\) 
    # Block out any script that includes a <script> tag in URL
    RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
    # Block out any script trying to set a PHP GLOBALS variable via URL
    RewriteCond %{QUERY_STRING} GLOBALS(=|[|\%[0-9A-Z]{0,2}) 
    # Block out any script trying to modify a _REQUEST variable via URL
    RewriteCond %{QUERY_STRING} _REQUEST(=|[|\%[0-9A-Z]{0,2})
    # Send all blocked request to homepage with 403 Forbidden error!
    RewriteRule ^(.*)$ index.php [F,L]
    #
    ########## End - Rewrite rules to block out some common exploits
     
     
    RewriteBase /
     
    # condizioni aggiunte da me successivamente
    RewriteCond %{HTTP_HOST} ^dediche\.org$ 
    RewriteRule (.*)  (quì c'è http www).dediche.org/$1 [R=301,L]
     
    #condizioni native
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} !^/index.php
    RewriteCond %{REQUEST_URI} (/|\.php|\.html|\.htm|\.feed|\.pdf|\.raw|/[^.]*)$  
    RewriteRule (.*) index.php
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]
    #
    

  • Super User

    Inserendolo alla fine quale problema si presenta?


  • User

    Se lo inserisco alla fine non succede nulla ma comunque non effettua nessun rewrite dei link. Ho provato a togliere la 'L' dall'ultima regola, che se non sbaglio dice al server di non guardare le altre regole che seguono, ma mi da questo errore quando carico la pagina: "You don't have permission to access /.html on this server". E nella barra degli indirizzi riscrive questo link: "(http www) dediche.org/.html". No sono molto ferrato con le regexp ma prima o poi devo mettermi a studiarle, ce l'ho in programma ma non ho mai tempo..