RewriteRule SEO
Vediamo in questa guida di comprendere al meglio uno dei tanti moduli presenti nel vostro server web Apache , ai fini SEO , ossia mod_rewrite. Si tratta di un programma che rende ha come scopo quello di prendere una richiesta di un client (Voi) e editarla, modificarla secondo le direttive che trova scritte in un file chiamato .htaccess. Qui trovate il manuale di riferimento del Server Apache , al momento in cui stiamo scrivendo questa guida siamo arrivati alla versione 2.4. Primo passo che occorre fare è verificare se il modulo è stato pre caricato con questo , altrimenti rivolgetevi al proprietario della vostra soluzione hosting e richiedete che lo sia in ogni modo mettete queste righe come primo codice nel vostro htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
OPtions +FollowSymlinks
RewriteBase /
</IfModule>
RewriteEngine On attivia la modalità di riscruttura
Options +FollowSymlinks comunica ad Apache di eseguire i link simobolici, praticamente serve per fare funzionare Apache distribuzione Linux anche su un server Windows in modo corretto. Facciamo un discorso di preambolo . Siccome siete venuti in questo sito volete riscrivere un Url Friendly.
Cosa è un Url SEO Friendly?
Qui dobbiamo andare a considerare quelle piccole informazioni che i padroni di google per bocca di Matt Cutts si degnano di farci sapere di volta in volta. Per esempio prendiamo un CMS come Worpdess, da un pò di tempo c’e’ la possibilità di cambiare i permanilink ossia i link dei vostri articoli prima fino a un 5 anni fa un tipico link di wordpress era dato da
http://www.miosito.ext/?p=1234
mentre con i permalink un tipico link è dato da
http://www.miosito.ext/pluto-abbaia/
ovviamente il secondo link è portatore di molta più informazione da parte di google e quindi viene definito SEO Friendly. Ma andiamo veramente per passi supponiamo di volere mappare index.php in index.html ossia ipotizziamo che l’utente carichi la pagina index.php ma le informazioni le riceva dalla pagina html.
Carico pagina index.php e ricevo le informazioni da index.html
RewriteRule ^index.php$ index.htm
Per essere più specifici la riga sopra dice al server web Apache che qualora l’utente carichi nel nostro server una pagina che termini con index.poh, allora le informazioni da caricare le trovi sulla pagina index.html
Veniamo a qualcosa di più specifico ossia
SEO ULR Friendly con htaccess
Supponiamo che il nostro indirizzo reale sia index.php?p=news
e che vogliamo rimappare il tutto in qualcosa di molto più amichevole del tipo
/news/
In questo caso dovremo inserire nel nostro htaccess la seguente riga di codice
RewriteRule ^index.php/(.*)\.htm$ index.php?sezione=$1
Dove
Rewriterule è la parola chiave
- ^index.php/ trasforma in index.php e quindi praticamente non fanulla
- / crea di fatto una directory virtuale
- (.*) questo lo dividiamo in tre parti.
. qualsiasi carattero
* ripetuto un numero infinito di volte
( ) trasformalo in variabile
.html assegnagli estensione html
$ termina prima parte della riscrittura
- $1 è il back reference ed ha il compito di cattura del valore della variabile che nel nostro caso è news e sostituirà il valore di (.*)
- Vediamo un altro esempio sulla stessa riga di quello sopra. Consideriamo che vogliamo fare all’utente il login in questo modo
- http://www.sito.it/corso/123
invece che
http://www.sito/corso.php?id=123
in queto caso la procedura da seguire è la seguente
RewriteRule ^corso\/(.*)$ corso.php?id=$1
questo codice è formalmente corretto ma non lo è del tutto, in quanto come abbiamo progettato il tutto in id il server si aspetta un codice numerico ma se si trova un codicealfanumerico allora viene generato un codice, che è un parametro del progetto dentro il file php, ma molte generazioni di error potrebbero portare il web server a rallentare , consideriamo quindi il seguente codice
RewriteRule ^corso\/([0-9]{1,10})$ corso.php?id=$1
Dove potete notare che abbiamo sostituito
([0-9]{1-10]) con (.*)
che indica di accettare al server solamente numeri compresi fra 0 e 9
nel caso avessimo due parametri da passare come variabile dovremmo fare
RewriteRule ^corso/(.*)/(.*).htm$ strumenti/corso.php?id=$1&id=$2
Il funzionamento è di fatto analogo a quello sopra descritto.
Anche se non lo abbiamo detto esplicitamente in questo capitolo introduttivo vi abbiamo parlato delle espressioni regolari.
Le espressioni regolari RegEx
Le espressioni regolari sono uno strumento molto potente che ci permette di codificare un testo tramite dei caratteri speciali che il metalinguaggio riconosce , in questo caso a riconescerli è ovviamente il web server Apache. Vediamone qualcuno.
Identificatori di Testo
Le parentesi quadre indicano una classe che può raggruppare un numero indistinto di valori es [ABc] vuol dire che può rappresentare A o B o c ma non C oppure [a-c] indica un elemento dell’alfabeto fra a e c ossia o a oppure b oppure c queste classe si possono anche unire a formare classi più grandi come [a-zA-Z] che segnifica che può essere un elemento fra a e z oppure un elemento fra A e Z oppure [0-9] un elemento compreso fra 0 e 9
Il simbolo . (punto) indica qualsiasi carattere
Il simbolo ^ indica che la parola che segue non deve avere nulla prima ossia prima abbiamo scritto ^index questo significa che accetta index ma non editindex e cosi’ via.
il simbolo $ indica la fine di una parola quindi index$ legge index o editindex ma non index.php
Il simbolo \s: indica lo spazio.
Quantificatori
- ? 0 o 1 occorrenze dell’identificatore di testo precedente
- * 0 o N occorrenze dell’identificatore di testo precedente (N>0)
- + 1 o N occorrenze dell’identificatore di testo precedente (N>1)
Escape:
\ esegue l’escape del carattere che segue
Negazione:
è possibile eseguire la “negazione” di un determinato pattern facendolo precedere dal carattere punto esclamativo !
il codice {m,M} permette invece di indicare con precisione il numero minimo (m) e massimo (M) di ripetizioni. Se scriviamo [a-z]{3,10} vogliamo solo parole composte da lettere alfabetiche minuscole di lunghezza compresa tra 3 e 10 caratteri
Configurare il modulo RewriteRule
Finora abbiamo parlato del modulo RewriteRule , vediamo come attivarlo, in primis occore andare sul file di configurazione di apache e decommentare nel file http.conf al fine di ottenere un miglioramento SEO
LoadModule rewrite_module modules/mod_rewrite.so
AddModule mod_rewrite.c
a questo punto scriviamo questo semplice codice che da tutte le informazioni sul php installato e i relativi moduli
<?php
phpinfo();
?>
Se il modulo mod_rewrite risulta presente è la conferma che cercavamo, ossia che è attivo.
La riscrittura condizionata RewriteCond
E’ fondalmentalmente quello che dice di essere ossia ricrive condizionatamente ad una condizione riscrive se.
Il suo codice è il seguente
RewriteCond espressione1
RewriteRule1
RewriteRule2
RewriteRule…
RewriteRuleN [L]
Da cui si capisce ancora meglio che viene attivata la RewriteRule1….RewriteRuleN solo nel caso che l’espressionne 1 risulti essere vera.
il suo codice è
RewriteCond StringaDaTestare Pattern
In questi casi i parametri di utilizzo sono veramente molti alla versione 2.2 riporta i seguenti
HTTP headers: connection & request:
HTTP_USER_AGENT
HTTP_REFERER
HTTP_COOKIE
HTTP_FORWARDED
HTTP_HOST
HTTP_PROXY_CONNECTION
HTTP_ACCEPT
REMOTE_ADDR
REMOTE_HOST
REMOTE_PORT
REMOTE_USER
REMOTE_IDENT
REQUEST_METHOD
SCRIPT_FILENAME
PATH_INFO
QUERY_STRING
AUTH_TYPE
server internals:
date and time: specials:
DOCUMENT_ROOT
SERVER_ADMIN
SERVER_NAME
SERVER_ADDR
SERVER_PORT
SERVER_PROTOCOL
SERVER_SOFTWARE
TIME_YEAR
TIME_MON
TIME_DAY
TIME_HOUR
TIME_MIN
TIME_SEC
TIME_WDAY
TIME
API_VERSION
THE_REQUEST
REQUEST_URI
REQUEST_FILENAME
IS_SUBREQ
HTTPS
come potete vedere , ma ormai siete esperti e quindi vi potete destreggiare noi ci limitiamo qui ai casi che sono i più comuni.
#Riscrive con status 301 le request url del tipo mysite.com/* in www.mysite.com/*
RewriteCond %{HTTP_HOST} ^miosito\.com
RewriteRule ^(.*)$ http://www.miosito.com/$1 [R=301,L]
# questa regola serve per tagliare le pagine che hanno solamente come parametro id all’interno
RewriteCond %{QUERY_STRING} ^id=([0-9]+)$
RewriteRule ^/web(.+)$ /web/? [R=301,L]
mentre nel caso di regolazione temporale
# questa regola serve per redirigere le richieste HTTP a seconda dell’ora
RewriteCond %{TIME_HOUR}%{TIME_MIN} >0900
RewriteCond %{TIME_HOUR}%{TIME_MIN} <1500
I Flag del Rewritemodule
Scrivendo questa guida spesso e volentieri avete visto che ci sono dei flag [R,NC] etc. etc. vediamo che cosa sono
- [R] manda la url invocata ad un indirizzo esterno al nostro dominio inviando un response code 302 che indica mossa temporaneamente che tradotto in termini di google SEO significa che non viene passato Page Rank da parte del motore di ricerca Google
- [F] impedisce di accedere alla url invocata e restituisce codice 403 accesso non consentito.
- [G] significa che la url non è più presente nel server che gli avete indicato, il codice di risposta del server è 410
- [L] indica al server di non seguire altre direttive seguenti nel caso le trovasse.
- [P] passa il controllo al modulo mod_proxy.
- [QSA]Quando la sostituzione URI contiene una stringa di query, il comportamento predefinito di RewriteRule è quella di scartare la stringa di query esistente e sostituirlo con la nuova generata . Utilizzando il flag [QSA] fa sì che le stringhe di query da combinare.Si consideri la seguente regola:RewriteRule /pages/(.+) /page.php?page=$1 [QSA]
Con il [QSA] Flag una richiesta di /pages/123?one=two
sarà mappato /page.php?page=123&one=two
. . Senza la bandiera [QSA], che la stessa richiesta sarà mappato / page.php page = 123? – cioè, la stringa di query esistente verrà eliminata.
Trucchi SEO
Vi insegniamo adesso che siete abbastanza pratici dei trucchetti SEO per rendere più appetibile il vostro sito a Google.
Vediamo come impedire che venga scaricato dei download
AddType application/octet-stream .pdf
AddType application/octet-stream .zip
AddType application/octet-stream .mov
con queste regole skipperete il www del file
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^www.mysite.com [NC]
RewriteRule ^(.*)$ http://mysite.com/$1 [L,R=301]
Per creare delle pagine di errore personalizzate possiamo fare
ErrorDocument 401 /error/Errore401.php
ErrorDocument 403 /error/Errore403.php
ErrorDocument 404 /error/Errore404.php
ErrorDocument 500 /error/Errore500.php
Vediamo adesso qualche istruzione per velocizzare il vostro sito web.
Iniziamo a dettare le regole al server per compimere i file
# comprimere testo, html, javascript, css, xml:
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
e per fare il caching dei file potremmo fare
<FilesMatch “.(flv|gif|jpg|jpeg|png|ico|swf|js|css|pdf)$”>
Header set Cache-Control “max-age=2592000”
</FilesMatch>
Occupiamoci adesso del settore sicurezza per evitare gli attacchi degli hacker
Blocchiamo l’accesso al file htaccess
<Files .htaccess>
order allow,deny
deny from all
</Files>
<Files secretfile.jpg>
order allow,deny
deny from all
</Files>
<FilesMatch “.(htaccess|htpasswd|ini|phps|fla|psd|log|sh)$”>
Order Allow,Deny
Deny from all
</FilesMatch>
Vediamo come sia possibile disabilitare la visulaizzazione di alcune specifiche cartelle
# disabilita la visualizzazione della cartella
Options All -cartella1
# abilita la visualizzazione della cartella
Options All +cartella1
vediamo adesso come sia possiible bloccare alcuni domini
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_REFERER} dominio1.com [NC,OR]
RewriteCond %{HTTP_REFERER} dominio2.com [NC,OR]
RewriteRule .* – [F]
</ifModule>
E per bloccare uno specifico user agent si fa
# blocca i visitatori indicati
<IfModule mod_rewrite.c>
SetEnvIfNoCase ^User-Agent$ .*(craftbot|download|extract|stripper|sucker|ninja|clshttp|webspider|leacher|collector|grabber|webpictures) HTTP_SAFE_BADBOT
SetEnvIfNoCase ^User-Agent$ .*(libwww-perl|aesop_com_spiderman) HTTP_SAFE_BADBOT
Deny from env=HTTP_SAFE_BADBOT
</ifModule>
Per altri approfondimenti SEO su come utilizzare Apache
Mi piace:
Mi piace Caricamento...
Correlati
Fabrizio S.
Share post:
RewriteRule SEO
Vediamo in questa guida di comprendere al meglio uno dei tanti moduli presenti nel vostro server web Apache , ai fini SEO , ossia mod_rewrite. Si tratta di un programma che rende ha come scopo quello di prendere una richiesta di un client (Voi) e editarla, modificarla secondo le direttive che trova scritte in un file chiamato .htaccess. Qui trovate il manuale di riferimento del Server Apache , al momento in cui stiamo scrivendo questa guida siamo arrivati alla versione 2.4. Primo passo che occorre fare è verificare se il modulo è stato pre caricato con questo , altrimenti rivolgetevi al proprietario della vostra soluzione hosting e richiedete che lo sia in ogni modo mettete queste righe come primo codice nel vostro htaccess
RewriteEngine On attivia la modalità di riscruttura
Options +FollowSymlinks comunica ad Apache di eseguire i link simobolici, praticamente serve per fare funzionare Apache distribuzione Linux anche su un server Windows in modo corretto. Facciamo un discorso di preambolo . Siccome siete venuti in questo sito volete riscrivere un Url Friendly.
Cosa è un Url SEO Friendly?
Qui dobbiamo andare a considerare quelle piccole informazioni che i padroni di google per bocca di Matt Cutts si degnano di farci sapere di volta in volta. Per esempio prendiamo un CMS come Worpdess, da un pò di tempo c’e’ la possibilità di cambiare i permanilink ossia i link dei vostri articoli prima fino a un 5 anni fa un tipico link di wordpress era dato da
mentre con i permalink un tipico link è dato da
ovviamente il secondo link è portatore di molta più informazione da parte di google e quindi viene definito SEO Friendly. Ma andiamo veramente per passi supponiamo di volere mappare index.php in index.html ossia ipotizziamo che l’utente carichi la pagina index.php ma le informazioni le riceva dalla pagina html.
Carico pagina index.php e ricevo le informazioni da index.html
Per essere più specifici la riga sopra dice al server web Apache che qualora l’utente carichi nel nostro server una pagina che termini con index.poh, allora le informazioni da caricare le trovi sulla pagina index.html
Veniamo a qualcosa di più specifico ossia
SEO ULR Friendly con htaccess
Supponiamo che il nostro indirizzo reale sia index.php?p=news
e che vogliamo rimappare il tutto in qualcosa di molto più amichevole del tipo
/news/
In questo caso dovremo inserire nel nostro htaccess la seguente riga di codice
Dove
Rewriterule è la parola chiave
. qualsiasi carattero
* ripetuto un numero infinito di volte
( ) trasformalo in variabile
.html assegnagli estensione html
$ termina prima parte della riscrittura
invece che
in queto caso la procedura da seguire è la seguente
questo codice è formalmente corretto ma non lo è del tutto, in quanto come abbiamo progettato il tutto in id il server si aspetta un codice numerico ma se si trova un codicealfanumerico allora viene generato un codice, che è un parametro del progetto dentro il file php, ma molte generazioni di error potrebbero portare il web server a rallentare , consideriamo quindi il seguente codice
Dove potete notare che abbiamo sostituito
che indica di accettare al server solamente numeri compresi fra 0 e 9
nel caso avessimo due parametri da passare come variabile dovremmo fare
Il funzionamento è di fatto analogo a quello sopra descritto.
Anche se non lo abbiamo detto esplicitamente in questo capitolo introduttivo vi abbiamo parlato delle espressioni regolari.
Le espressioni regolari RegEx
Le espressioni regolari sono uno strumento molto potente che ci permette di codificare un testo tramite dei caratteri speciali che il metalinguaggio riconosce , in questo caso a riconescerli è ovviamente il web server Apache. Vediamone qualcuno.
Identificatori di Testo
Le parentesi quadre indicano una classe che può raggruppare un numero indistinto di valori es [ABc] vuol dire che può rappresentare A o B o c ma non C oppure [a-c] indica un elemento dell’alfabeto fra a e c ossia o a oppure b oppure c queste classe si possono anche unire a formare classi più grandi come [a-zA-Z] che segnifica che può essere un elemento fra a e z oppure un elemento fra A e Z oppure [0-9] un elemento compreso fra 0 e 9
Il simbolo . (punto) indica qualsiasi carattere
Il simbolo ^ indica che la parola che segue non deve avere nulla prima ossia prima abbiamo scritto ^index questo significa che accetta index ma non editindex e cosi’ via.
il simbolo $ indica la fine di una parola quindi index$ legge index o editindex ma non index.php
Il simbolo \s: indica lo spazio.
Quantificatori
Escape:
\ esegue l’escape del carattere che segue
Negazione:
è possibile eseguire la “negazione” di un determinato pattern facendolo precedere dal carattere punto esclamativo !
il codice {m,M} permette invece di indicare con precisione il numero minimo (m) e massimo (M) di ripetizioni. Se scriviamo [a-z]{3,10} vogliamo solo parole composte da lettere alfabetiche minuscole di lunghezza compresa tra 3 e 10 caratteri
Configurare il modulo RewriteRule
Finora abbiamo parlato del modulo RewriteRule , vediamo come attivarlo, in primis occore andare sul file di configurazione di apache e decommentare nel file http.conf al fine di ottenere un miglioramento SEO
LoadModule rewrite_module modules/mod_rewrite.so
AddModule mod_rewrite.c
a questo punto scriviamo questo semplice codice che da tutte le informazioni sul php installato e i relativi moduli
Se il modulo mod_rewrite risulta presente è la conferma che cercavamo, ossia che è attivo.
La riscrittura condizionata RewriteCond
E’ fondalmentalmente quello che dice di essere ossia ricrive condizionatamente ad una condizione riscrive se.
Il suo codice è il seguente
Da cui si capisce ancora meglio che viene attivata la RewriteRule1….RewriteRuleN solo nel caso che l’espressionne 1 risulti essere vera.
il suo codice è
RewriteCond StringaDaTestare Pattern
In questi casi i parametri di utilizzo sono veramente molti alla versione 2.2 riporta i seguenti
come potete vedere , ma ormai siete esperti e quindi vi potete destreggiare noi ci limitiamo qui ai casi che sono i più comuni.
mentre nel caso di regolazione temporale
I Flag del Rewritemodule
Scrivendo questa guida spesso e volentieri avete visto che ci sono dei flag [R,NC] etc. etc. vediamo che cosa sono
Con il [QSA] Flag una richiesta di
/pages/123?one=two
sarà mappato/page.php?page=123&one=two
. . Senza la bandiera [QSA], che la stessa richiesta sarà mappato / page.php page = 123? – cioè, la stringa di query esistente verrà eliminata.Trucchi SEO
Vi insegniamo adesso che siete abbastanza pratici dei trucchetti SEO per rendere più appetibile il vostro sito a Google.
Vediamo come impedire che venga scaricato dei download
con queste regole skipperete il www del file
Per creare delle pagine di errore personalizzate possiamo fare
Vediamo adesso qualche istruzione per velocizzare il vostro sito web.
Iniziamo a dettare le regole al server per compimere i file
e per fare il caching dei file potremmo fare
Occupiamoci adesso del settore sicurezza per evitare gli attacchi degli hacker
Blocchiamo l’accesso al file htaccess
Vediamo come sia possibile disabilitare la visulaizzazione di alcune specifiche cartelle
vediamo adesso come sia possiible bloccare alcuni domini
E per bloccare uno specifico user agent si fa
Per altri approfondimenti SEO su come utilizzare Apache
Condividi:
Mi piace:
Correlati
La gestione degli errori in runtime php, php.ini e .htaccess
Quando si deve programmare in un qualsiasi linguaggio una delle cose sicuramente piu’ importanti nella fase di sviluppo di un ‘applicazione è il debug ed in particolare la visualizzazione degli. Leggi ancora…
Condividi:
Mi piace:
Continue Reading
Installazione Apache Tomacat 7 e webapp con JSP e Servlet
Vediamo adesso come si installa Apache Tomcat 7, in quanto l’ultima versione installa presenta dei sostanziali cambiamenti rispetto alle precedenti versioni. Intanto Apache Tomcat è un web container open source sviluppato dalla Apache Software Foundation.. Leggi ancora…
Condividi:
Mi piace:
Continue Reading
Rendere sicuro WordPress da attacchi Hacker con .htaccess
Vi parliamo adesso del blog WordPress e delle principali tecniche per impedire ad hacker di causare danni e prelevare informazioni. Agiremo su .htacces, permesso dei file , robots.txt. Partiamo subito. Leggi ancora…
Condividi:
Mi piace:
Continue Reading
Guida all’Installazione del Web Server Apache e PHP
Guida Installazione Web Server Apache Apache HTTP Server è il nome dato alla piattaforma server modulare più diffusa (circa l’80% dei server attualmente in uso utilizzano questa piattaforma ) in. Leggi ancora…
Condividi:
Mi piace:
Continue Reading