Visualizza post

Questa sezione ti permette di visualizzare tutti i post inviati da questo utente. N.B: puoi vedere solo i post relativi alle aree dove hai l'accesso.


Topics - danielecr

Pagine: [1]
1
Ciao a tutti,
scrivo in questa sezione perchè l'argomento non centra una mazza con joomla, ma può magari diventare utile per qualcuno.
Ho implementato in parallelo al sito in joomla delle pagine AMP: per bloccare alcuni elementi delle pagine previo consenso del visitatore (come cookies analitici) ho utilizzato il recente "amp-consent" ( https://www.ampproject.org/docs/reference/components/amp-consent ).
"amp-consent" necessita di un endpoint per funzionare a dovere, per verificare lo stato del consenso dato dal visitatore.
Tuttora, e quando ho implementato le pagine AMP, non avevo trovato esempi concreti a riguardo, o comunque non chiarissimi (almeno per me) e ho cercato di seguire le indicazioni date su ampproject.org - https://www.ampproject.org/docs/fundamentals/amp-cors-requests

In particolare, seguendo la documentazione, si dice:
Citazione
If `Origin` header is set:

1. If the origin was not `*.ampproject.org`, `*.amp.cloudflare.com` or the publisher's (aka your) origin, stop and return an error response.
2. Check the `__amp_source_origin` query parameter. If it's not the publisher's origin stop and return an error response.
3. If both checks pass, proceed to process the request.

Otherwise, if `Origin` header is NOT set:

1. Check if the request has `AMP-Same-Origin: true` header. If not, stop and return an error response.
    * This custom request header is sent by AMP runtime when making an XHR request on sameorigin (document served from non-cache URL).
2. Otherwise proceed to process the request.

It's very important that these all are done first before processing the request, this provides protection against CSRF attacks and avoids processing untrusted sources requests.

Si tratta quindi di effettuare una richiesta CORS di tipo POST a un endpoint, che ho scritto in php.

Premettendo che il dominio è indicato come mio-dominio.com, che ho un certificato https attivo e che ho i redirezionamenti da non-www a www e da http a https --> qui di seguito il codice dell'endpoint che ho scritto:

Codice: [Seleziona]
<?php
if ( $_SERVER['REQUEST_METHOD'] == 'POST' ) {
   if (isset(
$_SERVER['HTTP_ORIGIN'])) {
      
$http_origin $_SERVER['HTTP_ORIGIN'];
      
$amp_origin $_REQUEST['__amp_source_origin'];
      if ((
$http_origin == "https://www-mio--dominio-com.cdn.ampproject.org" || $http_origin == "https://mio--dominio-com.cdn.ampproject.org" || $http_origin == "https://cdn.ampproject.org" || $http_origin == "https://www-mio--dominio-com.amp.cloudflare.com" || $http_origin == "https://mio--dominio-com.amp.cloudflare.com" || $http_origin == "https://www.mio-dominio.com" || $http_origin == "https://mio-dominio.com") && ($amp_origin == "https://www.mio-dominio.com" || $amp_origin == "https://mio-dominio.com")) {
         
header("access-control-allow-credentials:true");
         
header("access-control-allow-headers:Content-Type, Content-Length, Accept-Encoding, X-CSRF-Token");
         
header("access-control-allow-methods:POST");
         
header("access-control-allow-origin:".$_SERVER['HTTP_ORIGIN']);
         
header("access-control-expose-headers:AMP-Access-Control-Allow-Source-Origin");
         
header("amp-access-control-allow-source-origin:".$_REQUEST['__amp_source_origin']);
         
header("Content-Type: application/json");
         
$output = new \stdClass();
             
$output->promptIfUnknown true;
             echo 
json_encode($output);
      }
      else {
         echo(
"something went wrong");
      }
   }
   else {
      
$ampsameoriginvalue "";
      foreach (
getallheaders() as $name => $value) {
         if (
strtoupper($name) == "AMP-SAME-ORIGIN") {
            
$ampsameoriginvalue $value;
         }
      }
      if (
$ampsameoriginvalue == "true") {
         
$amp_origin $_REQUEST['__amp_source_origin'];
         if (
$amp_origin == "https://www.mio-dominio.com" || $amp_origin == "https://mio-dominio.com") {
            
header("access-control-allow-credentials:true");
            
header("access-control-allow-headers:Content-Type, Content-Length, Accept-Encoding, X-CSRF-Token");
            
header("access-control-allow-methods:POST");
            
header("access-control-allow-origin:https://www.mio-dominio.com");
            
header("access-control-expose-headers:AMP-Access-Control-Allow-Source-Origin");
            
header("amp-access-control-allow-source-origin:".$_REQUEST['__amp_source_origin']);
            
header("Content-Type: application/json");
            
$output = new \stdClass();
                
$output->promptIfUnknown true;
                echo 
json_encode($output);
         }
         else {
            echo(
"something went wrong");
         }
      }
      else {
         echo(
"something went wrong");
      }
   }
}
else {
   echo 
"post only";
}
?>


Quello che fa è:
1- verifica che la richiesta sia POST, altrimenti dai un messaggio di errore
2- verifica se l'header Origin è presente
3- se l'header Origin è presente: se il valore dell'header Origin è in whitelist e se amp origin è in whitelist, imposta gli header di risposta e procedi alla richiesta CORS, altrimenti dai un messaggio di errore
4- se l'header Origin non è presente verifica se negli header di richiesta esiste Amp-Same-Origin: true
5- se Amp-Same-Origin: true è presente imposta gli header e procedi alla richiesta CORS, altrimenti dai un messaggio di errore
6- se l'header Amp-Same-Origin: true non esiste dai un messaggio di errore

Ora, mi sembra che funzioni tutto correttamente, sia nella cache AMP, sia aprendo le pagine AMP direttamente su mio-dominio.com, ma visto che è la prima volta che mi approccio a CORS, magari mi è sfuggito qualcosa, magari a livello di sicurezza.

Anche perchè fino ad oggi, tutte le volte che ho aperto questo file l'ho modificato.... ::)

Magari se qualcuno ha voglia scorrendo il codice può capire se ho seguito correttamente il flusso delle istruzioni, o se ho fatto qualche cazzata...

EDIT: ops, mi sono accorto che https://www.ampproject.org/docs/fundamentals/amp-cors-requests è stato aggiornato e ora c'è un esempio in javascript.

2
Ciao a tutti,
il GDPR 2018 è alle porte e iniziano a comparire domande su come adeguare le varie policies per essere in regola con la nuova norma.
Qui di seguito ho raccolto un po' di informazioni dalla norma stessa e da avvocati e consulenti.
Dopo la panoramica espongo come ho adeguato il mio sito internet.
Questa discussione è relativa ai soli cookies.
Ripeto che sono informazioni raccolte personalmente e in rete, le affermazioni che seguono possono essere giuste o sbagliate, c'è ancora parecchia confuzione a riguardo.


Generalità

Le persone fisiche possono essere associate ad identificatori online come indirizzi ip o identificatori di cookie o altri identificatori.
Ciò può lasciare tracce che se utilizzate insieme ad altre informazioni possono identificare l'utente.
Se ciò avviene, si stanno trattando dati personali, quindi bisogna adeguarsi al GDPR 2018.

Come adeguarsi?
1- Informare l'utente in via anticipata dell'impiego dei cookies
2- Informare l'utente delle finalità e modalità dell'impiego dei cookies
3- Informare l'utente circa i termini di cancellazione dei cookies
4- Consentire all'utente di attivare o disattivare i cookies in via anticipata
5- Informare l'utente circa i soggetti a cui eventualmente i dati raccolti sono trasferiti

Tipi di cookies:
6- Funzionali, autenticazione e sicurezza non persistenti, che si cancellano al termine della sessione dell'utente: non è necessaria la richiesta del consenso preventivo del visitatore. E' necessario tuttavia menzionarli all'interno della cookie policy, spiegandone la natura.
7- Cookies persistenti di prima parte: occorre la richiesta del consenso preventivo del visitatore.
8- Cookies analitici (non in forma anonima): raccolgono informazioni sui visitatori, quali indirizzi ip, provenienza geografica, sistema operativo, risoluzione dello schermo, pagine visitate, tempo di permanenza, etc.; è necessaria la richiesta preventiva del consenso dell'utente; solitamente il gestore del sito si appoggia a servizi di statistica esterni. Nella cookie policy occorre menzionarli, spiegandone l'utilizzo, menzionando anche i servizi terzi di statistica, con link alla loro cookie policy. Se presente, è buona regola inserire il link di opt-out per i cookies di terze parti.
9- Cookies utilizzati per finalità di marketing: ricadono in questa categoria anche i cookie analitici che sono utilizzati per finalità di marketing e/o profilazione. Occorre ottennere il consenso preventivo dell'utente.

Inoltre:
10- Occorre che l'utente in qualsiasi momento possa cancellare o accettare i cookie.
11- Occorre che ci sia riferimento alla cookie policy in ogni pagina del sito (ad esempio nel footer).


Cosa non fare:
12- Utilizzare un unico consenso per far accettare tutti i cookies: l'utente deve essere in grado di poter attivare o disattivare i cookies a sua scelta (??Non sono molto convinto..in quanto proprietario del sito potrei far accettare tutti i cookies insieme, o farli cancellare tutti quanti).
13- Il consenso implicito non va bene: il consenso va fornito attraverso una chiara azione del visitatore, come click su caselle di valutazione, o preferenze, o specifiche impostazioni.

Operazioni che il gestore del sito deve compiere:
14- Prevedere un box opt-in, con la possibilità dell'utente di cliccare e scegliere quali cookies attivare o disattivare (??anche questo non mi convince, il gestore potrebbe decidere di far accettare o disattivare tutti i cookies).
15- Prevedere un box opt-out, perchè la scelta dell'utente in qualsiasi momento può cambiare, e deve essere in grado di modificare le sue scelte.
16- Offrire una chiara definizione delle categorie dei cookies utilizzati sul sito, se si tratta di cookies di profilazione è necessario descrivere la logica usata, la finalità e i soggetti eventuali a cui i dati raccolti vengono trasferiti e gli effetti sull'utente.
17- Informare l'utente del periodo di permamenza dei cookies.
18- Informare l'utente dell'utilizzo dei cookies funzionali, per le altre tipologie dare la possibilità all'utente di attivarli o disattivarli.
19- Tenere traccia delle scelte dell'utente: il "click" deve essere memorizzato attraverso dei record, che provino che la scelta è stata raccolta


Come mi sono adeguato?
Premettendo che il mio sito è un sito vetrina aziendale, i cookie che vengono impostati sono:
a) cookie del frontend di joomla: il nome del cookie non cambia, è pari a md5(md5('$chiave-segreta-nel-configuration.php' . 'site'))
b) il cookie plg_system_eprivacy: è il cookie del plugin EU eprivacy, che contiene l'informazione che riguarda se il visitatore ha accettato o meno il consenso
c) il cookie sc_is_visitor_unique relativo al servizio analitico StatCounter, che raccogli i dati dei visitatori in forma non anonima (l'indirizzo ip viene registrato)
d) il cookie NID di google.com, in quanto ho un iframe con google maps

Innanzitutto ho installato l'estensione gratuita EU eprivacy plugin di RicheyWeb:
https://www.richeyweb.com/software/joomla/packages/9-eu-e-privacy-directive

Questo plugin, se opportunamente configurato permette di informare il visitatore con link alla cookie policy a qualsiasi pagina del sito internet, con un blocco preventivo di tutti i cookies e, se accettati con un click, permette di cancellarli, sempre con un click e, se cancellati, permette di riconsiderarli, sempre con un click, in qualsiasi momento (punti 1, 4, 10, 11, 13, 15).
Per poter avere il blocco preventivo dei cookies di terze parti occorre ad esempio inglobare il codice di tracking o l'iframe della mappa in moduli separati, e assegnarli a un nuovo gruppo utenti, diverso da Public, che viene impostato anche nel plugin.
Nelle impostazioni è inoltre presente l'opzione di log, che registra in una tabella del database indirizzo ip del visitatore e data dell'accettazione della cookie policy (punto 19).

Nel mio specifico caso, purtroppo questo plugin mi ha dato qualche problema, non riusciva a cancellare i cookies impostati dal mio dominio e ho dovuto agire sul codice; il cuore del discorso è che i cookies si cancellano impostando una data precedente alla data attuale ed essendo su un hosting condiviso si deve specificare il dominio per il quale si vogliono cancellare i cookie.
Ad esempio se voglio cancellare il cookie sc_is_visitor_unique impostato dal dominio www.dominio.com basterà utilizzare il seguente codice:
Codice: [Seleziona]
<?php
setcookie
('sc_is_visitor_unique'''time()-1500,'/''www.dominio.com'0);
?>


Nella cookie policy, che può essere raggiunta da qualsiasi pagina del sito, ho quindi:
a) Definito cosa sono i cookies (punto 2)
b) Quali categorie di cookies esistono (punto 2)
c) Quali delle categorie di cookies il mio sito utilizza, facendo riferimento per i cookie di terze parti ai link delle rispettive cookie policies e se presente riferimento al link di opt-out dei cookies di terze parti (punti 2, 5, 16, 18)
d) Descritto cosa succede se non si accettano i cookies
e) Come disabilitare i cookies per i browser specifici più comuni
f) Descritto quali cookies il mio sito utilizza, con riferimento a nome, tipologia (funzionale, analitico, etc, persitente, non persistente) con relativa durata (punto 17)

Infine, per dare all'utente la possibilità di visionare in ogni momento quali cookies sono impostati sul suo device (cookies di prima parte), mediante il seguente codice, che io ho inserito in uno spoiler nella cookie policy:
Codice: [Seleziona]

<?php
$cookieData 
JFactory::getApplication()->input->cookie->getArray();
if (
$cookieData) {
$names implode', 'array_keys($cookieData));
$counter 0;
foreach(
$cookieData as $value)
  {
     ++
$counter;
  }
$exploded_names explode(", "$names);
for (
$i 0$i <= ($counter-1); $i++)
  {
     echo 
"Nome del cookie: " $exploded_names[$i] ."<br />";
  }
}
else
{
   echo 
"Nessun cookie impostato sul tuo device";    
}
?>


PS: ovviamente non è possibile "cancellare" con php i cookies impostati da terze parti, questo deve farlo il visitatore manualmente, per questo nella cookie policy deve esserci il riferimento generale su come cancellare i cookies e a quali cookies far riferimento.

3
Ciao a tutti,
ho un dilemma su cui vorrei avere le vostre opinioni.

Joomla ultima versione, attualmente 3.8.5
A seguito di una falla di sicurezza del mio sito avvenuta più di un anno fa, su google sono stati indicizzati 10.000 url farlocchi nel giro di pochi giorni (circa 2), da lì mi sono preoccupato di dare maggiore rilievo alla questione sicurezza  ;D
Tappata la falla, eliminato l'hack e eseguite le opportune azioni per eliminare dalla search console tutti quegli url farlocchi, ho risolto il problema dell'indicizzazione in pochissimo tempo.

Ciò che accadeva e accade tuttora, è che google continua, a distanza di più di un anno, a cercare alcune di quelle url, a cui viene risposto con uno status code 404.
Ad oggi, non sono molte, la search console ne segna 63, ma mi chiedevo se aveva senso modificare la risposta da status code 404 a 410.
Leggendo qua e là ci sono opinioni discordanti, c'è chi dice che con il 410 google rimuova la url molto velocemente e non torni più a cercare di visitarla, c'è chi dice che non cambia quasi nulla.

Da notare che tutti gli status code 404 sono pagine permanentemente cancellate e so comuque che un errato status code 410 può fare danni SEO se non lo si implementa correttamente.

La prima domanda che faccio è quindi se secondo voi ha un senso modificare la risposta di una pagina inesistente da 404 a 410.

Se ha senso, come implementarla?
Premettendo che ho un custom error.php, c'è chi propone di inserire nell'error.php:

Codice: [Seleziona]
if ($this->error->getCode() == '404'){
     header("HTTP/1.0 410 Gone");
     die;
}

ma perderei la customizzazione.

C'è chi propone di verificare prima se il visitatore sia un robot, quindi se lo è, rispondergli con uno status 410, se non lo è con un 404, in questo modo:

Codice: [Seleziona]
$client = new JApplicationWebClient();
if ($this->error->getCode() == '404') {
   if ($client->robot) {
      header("HTTP/1.1 410 Gone");
      die;
   }
}

In questo caso non perderei la customizzazione dell'error.php per il visitatore reale, ma c'è chi fa notare che ai robot non piace molto il fatto che a un robot si risponda una cosa e a un visitatore "reale" un'altra: anche se penso che la pagina non abbia "dei contenuti veri".

Voi come vi comportereste? Cambiereste o attendereste che google si stufi di cercare quelle pagine, magari ancora tra qualche anno?

Grazie

4
Ciao a tutti,
ho un bizzarro problema che non so spiegarmi.
Ho come template beez3 e joomla 3.8.3: ho personalizzato l'index.php in modo da far apparire un bottone back to top, in questo modo.

Nell'head richiamo i font-awesome.

Subito sotto a <div id="all">:
Codice: [Seleziona]
<button class="btn" onclick="topFunction()" id="myBtn" style="border: none;">
     <i class="fa fa-chevron-up">
</button>

E prima della chiusura del /body lo script:
Codice: [Seleziona]
<script>
window.onscroll = function() {scrollFunction()};

function scrollFunction() {
    if (document.body.scrollTop > 20 || document.documentElement.scrollTop > 20) {
        document.getElementById("myBtn").style.display = "block";
    } else {
        document.getElementById("myBtn").style.display = "none";
    }
}

function topFunction() {
    document.body.scrollTop = 0;
    document.documentElement.scrollTop = 0;
}
</script>

E relativo css:
Codice: [Seleziona]
#myBtn {
    position: fixed;
    bottom: 5px;
    right: 5px;
    background: orange;
    opacity: 0.6;
    width: 40px;
    height: 40px;
    display: block;
    text-decoration: none;
    z-index: 20000000;
    -webkit-border-radius: 10px;
    -moz-border-radius: 10px;
    border-radius: 10px;
    display: none;
    -webkit-transition: all 0.3s linear;
    -moz-transition: all 0.3s ease;
    -ms-transition: all 0.3s ease;
    -o-transition: all 0.3s ease;
    transition: all 0.3s ease;
}
#myBtn i {
    color: #fff;
    margin: 0;
    position: relative;
    font-size: 19px;
    z-index: 20000000;
    -webkit-transition: all 0.3s ease;
    -moz-transition: all 0.3s ease;
    -ms-transition: all 0.3s ease;
    -o-transition: all 0.3s ease;
    transition: all 0.3s ease;
}
#myBtn:hover i {
    color: #fff;
    top: -5px;
    z-index: 20000000;
}
#myBtn:hover {
    background: #ee7600;
    z-index: 20000000;
}

Tutto funziona bene, ma con chrome per android (ultima versione del play store) ho un comportamento anomalo che non riesco a spiegarmi, in una pagina del sito.

In questa pagina ho molteplici paragrafi, come ad esempio:
Codice: [Seleziona]
<p style="text-align:justify">
contenuto1
</p>
<p style="text-align:justify">
contenuto2
</p>
<p style="text-align:justify">
contenuto3
</p>

Succede che al caricamento della pagina la dimensione dei font è uniforme, quando scrollo verso il basso e supero i 20px dal top appare il bottone, ma appena appare i font del primo <p></p> si rimpiccioliscono; se scrollo verso l'alto, quando il bottone scompare, i font tornano uniformi.

Il responsabile di questo cambiamento è questa parte di script:
Codice: [Seleziona]
function scrollFunction() {
    if (document.body.scrollTop > 20 || document.documentElement.scrollTop > 20) {
        document.getElementById("myBtn").style.display = "block";
    } else {
        document.getElementById("myBtn").style.display = "none";
    }
}

function topFunction() {
    document.body.scrollTop = 0;
    document.documentElement.scrollTop = 0;
}

Se la tolgo dall'index.php i font rimangono di dimensione uniforme.

Da desktop tutto in ordine, così come con il browser nativo di android (app "Browser").

Attaccato anche il cellulare al pc in debug remoto con chrome, l'unica cosa che cambia allo scroll è la classe del bottone, che passa da display:block a display:none e viceversa.

Non riesco a collegare lo script al cambiamento della dimensione dei font..qualcuno ha qualche idea?

5
Joomla! 3 / jch optimize pro 5.2.2 problemi cache
« il: 30 Nov 2017, 20:54:44 »
Ciao a tutti, avete notato problemi con l'utima versione di jch optimize, la 5.2.2 e joomla 3.8.2?
Ho la versione pro e riscontro saltuariamente problemi nella gestione della cache, una volta al giorno circa sembra che il sito non carichi correttamente gli stili.
Un fix dei permessi dal plugin o un fix dell'ordinamento non risolve il problema.
Se cancello la cache dal plugin il sito torna a funzionare, qualche volta però dopo un caricamento di 2 o 3 pagine il problema si ripete.
Dal changelog la versione 5.2.2 dovrebbe risovere problemi di gestione cache, in realtà me ne ha creati.
Sono appena ripassato alla 5.2.1, controllerò se si ripresenta il problema.
Voi avete notato qualcosa di anomalo?

6
Joomla! 3 / Nuovo router J3.8.1 custom error page getModule
« il: 19 Ott 2017, 17:17:33 »
Ciao a tutti,
impostando il nuovo router in joomla 3.8.1 non riesco a caricare alcuni moduli nella pagina di errore (error.php) del template beez3, che ho modificato.

Questo menu viene caricato:
Codice: [Seleziona]
<?php $module JModuleHelper::getModule('menu'); ?>
<?php echo JModuleHelper::renderModule($module); ?> 

Anche questo menu viene caricato:
Codice: [Seleziona]
<?php
$lang 
JFactory::getLanguage();
$result $lang->getTag();
if (
$result=="it-IT") { 
$module JModuleHelper::getModule('menu''Menu');
echo 
JModuleHelper::renderModule($module);

else { 
$module JModuleHelper::getModule('menu''Menu laterale eng');
echo 
JModuleHelper::renderModule($module);
}
?>


Lo slideshow invece non viene caricato:
Codice: [Seleziona]
<?php
$lang 
JFactory::getLanguage();
$result $lang->getTag();
if (
$result=="it-IT") {
$module JModuleHelper::getModule('slideshowck''Slideshow CK it');
echo 
JModuleHelper::renderModule($module);

else {
$module JModuleHelper::getModule('slideshowck''Slideshow CK');
echo 
JModuleHelper::renderModule($module);
}
?>


E nemmeno questo modulo nel footer viene caricato:
Codice: [Seleziona]
<?php
$lang 
JFactory::getLanguage();
$result $lang->getTag();
if (
$result=="it-IT") { 
$module JModuleHelper::getModule('custom''Footer_pers_ridotto');
echo 
JModuleHelper::renderModule($module);

else { 
$module JModuleHelper::getModule('custom''Footer_pers - eng - ridotto');
echo 
JModuleHelper::renderModule($module);
}
?>


Con il router tradizionale invece si visualizzano tutti..qualcuno ha idea del perchè non vengano visualizzati con il nuovo router?

7
Ciao a tutti,
ho l'ultima versione di joomla installata per un sito multilingua, la 3.8.1, con le opzioni attiva e riscrivi url sef attive, router standard, non sperimentale.
Circa un anno fa, quando ancora non davo peso alla questione sicurezza, il mio sito è stato bucato: l'hack generava moltissime url che nel giro di un paio di giorni erano state indicizzate dai motori di ricerca.
Ho messo a posto tutto da parecchio tempo, ma mi sono accorto aprendo una finestra in anonimo con firefox ed elecando tutte le pagine indicizzate del mio dominio su google che c'era ancora una url (fasulla, generata dall'hack), ma che puntava ad un contenuto esistente.
Mi sono accorto che se inserisco una url del tipo www.miosito.com/en/qualsiasicontenuto/7qualsiasicontenuto vengo reindirizzato alla pagina con l'articolo che ha id 7 (sempre che esista l'articolo con id 7).

Per ora ho tamponato cambiando direttamente nel database l'id dell'articolo e del menu, in modo che il finto url riceva un errore 404 e quindi eliminando l'url dallo strumento rimozione url di google.

Avete anche voi lo stesso comportamento?

8
Sicurezza / Prevenire il session hijacking
« il: 20 Mag 2017, 13:53:22 »
Ciao a tutti,
sto cercando una soluzione/estensione per cercare di prevenire il session hijacking: usate o conoscete qualcosa?

NB: non cerco una soluzione per prevenire il login multiplo su un account (quindi la creazione di una seconda sessione attiva), ma qualcosa per prevenire il furto dell'id di una sessione attiva (quella dell'utente super user nel mio caso) che possa essere usato contemporaneamente da una seconda entità.

Grazie

9
SEO / [RISOLTO] .htaccess e aggiunta/rimozione slash a url
« il: 19 Mag 2017, 16:19:16 »
Ciao a tutti,
qualcuno sa che regole scrivere nell'htaccess in modo che:
1- se viene richiesto l'url linkalsito/en oppure linkalsito/it automaticamente aggiunga uno slash finale, in modo che diventi linkalsito/en/ oppure linkalsito/it/
2- tolga lo slash finale in tutti gli altri casi (nel caso in cui venga richiesto dal visitatore un url con slash finale) <-- ora, sia che venga richiesto con slash finale o meno il contenuto della pagina viene visualizzato (possibile problema di contenuto duplicato).

Attualmente ho questa regola per aggiungere lo slash:
Codice: [Seleziona]
RewriteCond %{REQUEST_URI} ^/(en|it)$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*[^/])$ /$1/ [L,R=301]

Come implemento il punto 2 senza che vada in loop?

10
Joomla! 3 / [RISOLTO] Joomla 3.7: articoli che scompaiono?
« il: 27 Apr 2017, 14:21:07 »
Ciao a tutti,
ho notato un piccolo problema con joomla 3.7: i nuovi articoli che creo ogni tanto scompaiono, ovvero creo un articolo, salvo, chiudo, non vedo l'articolo a pagina 1, vado a pagina 2 (ho 2 pagine di articoli in totale), non vedo l'articolo nemmeno a pagina 2, quindi torno a pagina 1, e riappare...qualcuno ha lo stesso bug? sempre se di bug si tratta...

Ho agigunto degli screenshots; dopo il login dal backend, contenuti-->articoli mi ritrovo la pagina1 (screen pagina1.png), vado a pagina2 (screen pagina2.png), torno a pagina1 (screen pagina1-seconda-volta.png) e magicamente mi ritrovo i 2 nuovi articoli (che sono due pagine custom 404)

11
SEO / [RISOLTO] meta descrizione e tag titolo duplicati
« il: 19 Apr 2017, 16:04:35 »
Ciao a tutti,
ho un sito multilingua con due lingue, inglese (en) e italiano (it).
La lingua di default è inglese, il visitatore viene redirezionato dalla root www.sito.com a www.sito.com/en tranne nel caso che non abbia già il cookie di una visita precedente nelle pagine in italiano, in questo caso viene redirezionato a www.sito.com/it.

Il redirect da www.sito.com a www.sito.com/en è di tipo 301.

Dalla search console di google non riesco a capire come mai e soprattutto come risolvere, nella sezione dei miglioramenti html, la segnalazione di meta description e tag title duplicati per www.sito.com e www.sito.com/en

Qualcuno sa come risolvere?

12
SEO / Tag noindex, follow su link categorie?
« il: 11 Apr 2017, 17:56:32 »
Ciao a tutti, giusto per scrupolo chiedo se sia corretto mettere il tag noindex, follow ovviamente solo sulle categorie articoli.
Ho due categorie, italiano (alias it), con id 2 e inglese (alias en), con id 8.
Praticamente mi sono accorto che google mi indicizza la pagina miosito.com/en/8-en : questa pagina contiene tutti gli articoli scritti, anche in modo ordinato, ma sono duplicati delle pagine già indicizzate.
E' corretto quindi mettere il tag noindex, follow?

Grazie

13
Ciao a tutti,
sul mio sito adopero il template di default beez3.
Ho un sito con 2 lingue con un main menu e 2 menu laterali (uno per ogni lingua).
Di default, il mobile menu si popola con le voci del main menu: io vorrei cambiarle con le voci dei menu laterali.
Credo che il file da modificare sia /templates/beez3/javascript/hide.js ma non so bene come fare; in particolare la voce, o una delle voci da modificare credo sia:

$menu = $("#header").find('ul.menu').first();

Qualcuno sa aiutarmi?

Ho modificato queste due righe:
$menu = $("#header").find('ul.menu').first();
$('#header').find('#menuwrapper').first().before($mobile.hide());

in
$menu = $("#nav").find('ul.menu').first();
$('#nav').find('#menuwrapper').first().before($mobile.hide());

Il main menu riesco a nasconderlo tramite css.

Il menu mobile ora è popolato dal menu laterale, ma è in una posizione che non va bene, stessa posizione del menu laterale (non mobile). Come lo sposto nell'header?

Grazie

14
Ciao a tutti,
recentemente mi sono ritrovato i seguenti files nella cartella /media/:
template.pdf
indexs.php
156875753eb9d2667c29c0af8ba38bc3.ini
579186.thumbs

Nel file di log leggo richieste come queste, apparentementi appartenenti a google:

66.249.75.160 - - [11/Nov/2016:07:15:57 +0100] "GET /media/indexs.php/579186/167949/week+3+homework+aib+problems.pdf HTTP/1.1" 301 - "-" "Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.96 Mobile Safari/537.36 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
66.249.75.160 - - [11/Nov/2016:07:15:58 +0100] "GET /en/media/indexs.php/579186/167949/week%203%20homework%20aib%20problems.pdf HTTP/1.1" 404 4628 "-" "Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.96 Mobile Safari/537.36 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"

Il 404 è ovviamente dovuto alla rimozione dei files.

I files sono allegati nello zip.

Ora mi trovo indicizzate in google pagine che puntano a files pdf con titoli contenenti le parole all'interno del file thumbs.
Oltre a rimuovere le pagine da google con l'apposito tool di segnalazione di google, oltre a rimuovere i files e aggiungere la cartella /media/ nel file robots, dovrei fare altro?
Qualcuno ha già visto questo tipo di spam?

Grazie

15
Ciao a tutti!
Dopo aver aggiornato a joomla 3.5.0 è ricomparsa la limitazione sulla lunghezza dei caratteri nei titoli degli articoli nel backend.
Prima avevo modificato la tabella prefix_content -> title impostando a VARCHAR 255 ma dopo l'aggiornamento non riesco a scrivere più di 100 caratteri.

Qualcuno può aiutarmi?

16
Ciao a tutti!Sono nuovo :)
Ho recentamente fatto un sito con joomla 3.4.1 e non riesco a trovare una soluzione a un problema che ho riscontrato:

Premetto che il sito è multi lingua (italiano e inglese).

Il sito è www.epic-srl.com (spero di non violare regole nel postarlo)
Riproduzione dell'errore:
1- click su bandierina italiana in una qualsiasi pagina del mio sito
2- ricerca su google delle pagine del mio sito e click da google su un qualsiasi link a una pagina inglese
(ES: ricerca su google di "epic s.r.l. biodiesel" e click sul risultato "Biodiesel production - E-PIC Srl")
3- il sito restituisce errore 404 di pagina non trovata perchè aggiunge al link il codice della lingua "it", ovvero al posto di:

http://www.epic-srl.com/index.php/cavitation-technologies/biodiesel-production

che tra l'altro è il link che compare "on hover" sul risultato di google, il visitatore viene mandato su

http://www.epic-srl.com/index.php/it/cavitation-technologies/biodiesel-production

Ne risulta quindi l'errore 404.

L'errore non si presenta se al punto 1 si clicca sulla bandierina inglese e al punto 2 si clicca su una pagina in italiano.

Sembra questo stesso bug segnalato tempo fa:
http://joomlacode.org/gf/project/joomla/tracker/?action=TrackerItemEdit&tracker_item_id=28151

Qualche soluzione?

Grazie per aver letto!

Daniele

EDIT: questo accade solo se la pagina in ita è aperta in una scheda del browser e si clicca da google sulla pagina inglese in un'altra scheda (durata cookie impostata a "sessione")

Pagine: [1]

Torna su