- Home
- Categorie
- Digital Marketing
- SEO
- Rewrite in un sito
-
Rewrite in un sito
Buongiorno,
questa è la mia sutazione. In un sito con pagine del tipo:/pagina_01.php
ho applicato una regola ReWrite da file .htaccess, per riscrivere le URL e farle diventare:
/URL-SEOOra però mi trovo con due pagine duplicate. A questo punto, è giusto impostare oltre all'UR rewriting anche un redirect 301 da /pagina_01.php a /URL-SEO e se sì come lo faccio?
Ringrazio chiunque mi sappia aiutare!
[TABLE="width: 235"]
[TD][/TD]
[/TR]
[/TABLE]
-
Ciao, Isotopia.
Per aiutarti avrei bisogno dell'htaccess, dovresti postarlo integralmente.
-
Grazie, questo è il contenuto del mio file .htaccess:
RewriteEngine On
ErrorDocument 404 /not_found.html
RewriteRule ^macchine-posa-wellpoint.php$ attrezzature_01.php
RewriteRule ^wellpoint-lavori-1.php$ reference_01.php
RewriteRule ^micropali-consolidamento-terreni.php$ tipologia_01.php
RewriteRule ^elettropome-wellpoint.php$ attrezzature_02.php
RewriteRule ^motopompe-silenziate-wellpoint.php$ attrezzature_03.php
RewriteRule ^posadreni-wellpoint.php$ attrezzature_04.php
RewriteRule ^wellpoint-lavori-2.php$ reference_02.php
RewriteRule ^wellpoint-lavori-3.php$ reference_03.php
RewriteRule ^drenaggio-verticale-wellpoint.php$ tipologia_02.php
RewriteRule ^wellpoint-lavori-4.php$ reference_04.php
RewriteRule ^drenaggio-orizzontale-wellpoint.php$ tipologia_04.php
RewriteRule ^pozzi-di-drenaggio.php$ tipologia_05.php
RewriteRule ^scavi-wellpoint.php$ tipologia_03.php
RewriteRule ^tipi-di-wellpoint.php$ tipi_di_wellpoint.php
RewriteRule ^wellpoint-drenaggi.php$ wellpoint_drenaggi.php
RewriteRule ^wellpoint-consulenza.php$ wellpoint_consulenza.php
RewriteRule ^([a-z-_0-9]+)/([0-9]+)/([0-9]*)$ news_scheda.php?titolo=$1&id=$2&p=$3Cosa devo applicare per reindirizzare la pagina con vecchia URL SEO verso la nuova pagina con URL SEO?
-
La discriminante è: vecchi URL indicizzati nei motori di ricerca oppure non indicizzati.
Nel primo caso (vecchi URL indicizzati), i redirect 301 sono indispensabili per prevenire contenuti duplicati; nel secondo caso i 301 non sono indispensabili in quanto il crawler può accedere solo ed esclusivamente agli URL resi pubblici dal webmaster.Escludiamo la seguente situazione pazzesca:
la root del tuo web server è impostata per tutto l'albero (tutte le sottocartelle e i files) a 777 e una direttiva di Apache autorizza il directory listing sulla root del sito.
In questo caso chiunque può leggere il contenuto di tutti i files presenti sul tuo sito, dunque anche i motori di ricerca. Questo significa che, seppure gli URL originari non risultassero indicizzati, potrebbero comunque esserlo in futuro, e si genererebbero pertanto contenuti duplicati. Sinceramente è una cosa improbabile, i servizi di hosting generalmente lo impediscono.Per capire cosa è indicizzato su Google, scrivi nel campo di ricerca:
site:[nomesito.estensionedominio]Per prevenire problemi ti consiglio pertanto il redirect 301 che, visto il tuo htaccess, puoi implementare semplicemente aggiungendo, ad ogni riga di RewriteRule, accanto alla L la dicitura R=301 intervallata da virgola:
[L,R=301]
-
Grazie del consiglio: le vecchie url sono tutte indicizzate, per cui ho provato ad aggiungere la dicitura R=301 nel file htaccess su ogni riga di Rewrite Rule intervallata da virgola, come mi hai suggerito. Il problema che ora ho è che mi comprare il seguente messaggio di errore: Forbidden You don't have permission to access ....(nome pagina.php) on this server.
Da cosa potrebbe dipendere, dove posso avesr sbagliato?
-
Controlla i permessi sulle cartelle.
-
Ciao
grazie ancora e a questo punto ti chiedo se per caso mi sai aiutare anche con questo nuovo ulteriore problema, perchè io non so proprio cosa fare. Ora, ho impostato:RewriteRule ^micropali-consolidamento-terreni.php$ tipologia_01.php [L,R=301]
Ma adesso la pagina risulta irraggiungibile, ossia: 404 Not Found
Secondo te da cosa può dipendere, dove ho sbagliato?
L'URL che esce impostando questa regola diventa così: dominio.it/var/www/vhosts/dominio.it/httpdocs/tipologia_01.php
Davvero non capisco, mi sembra che il codice in .htaccess sia corretto...spero qualcuno mi sappia aiutare.
Ciao
-
Ciao,
la stringa dominio.it/var/www/vhosts/dominio.it/httpdocs/tipologia_01.php ti compare proprio come URL in alto al browser?
Prova ad inserire la rigaRewriteBase /
subito dopo la RewriteEngine e a porre uno slash prima di ogni pagina php nel secondo parametro. Es.:
RewriteRule ^wellpoint-consulenza.php$ **/**wellpoint_consulenza.php [R=301,L]
Ultima domanda: il sito risiede in una sottocartella?
-
Sì l'URL dominio.it/var/www/vhosts/dominio.it/httpdocs/tipologia_01 mi compariva proprio nella barra del browser in alto.
Così ho provato ad inserire le modifiche che mi hai suggerito, ed infatti il redirect ora funziona, però non funziona più il rewriting: ossia, ora l'URL che mi visualizza il browser è tipologia_01.php e non micropali-consolidamento-terreni.php come io vorrei. Provando poi a scrivere la regola inversa, ossia:
RewriteRule ^tipologia_01.php$ / micropali-consolidamento-terreni.php [L,R=301]
il risultato è che ora il rewriting funziona, perchè l'URl in alto mi dà micropali-consolidamento-terreni.php, ma la pagina risulta 404 Not FOund (perchè in effetti un file con quel nome non esiste).
Se poi provo ad inserire entrambe le regole, ossia:
RewriteRule ^tipologia_01.php$ /micropali-consolidamento-terreni.php
RewriteRule ^micropali-consolidamento-terreni.php$ /tipologia_01.php [R=301]Si crea un loop.
Sembra che non riesca a venirne fuori, ma ci sarà pure un modo per reindirizzare la pagine indicizzate a cui si è cambiato nome con URL rewriting?
Il sito non risiede in sottocartella, ma all'interno della cartella httpdocs presente nella root principale.
-
@Isotopia said:
Sembra che non riesca a venirne fuori, ma ci sarà pure un modo per reindirizzare la pagine indicizzate a cui si è cambiato nome con URL rewriting?
Perché l'URL da chiamare va per primo e la risorsa fisica che risiede sul webserver va per seconda:
RewriteRule ^micropali-consolidamento-terreni.php$ /tipologia_01.php [L,R=301]
il primo parametro, quello racchiuso tra il cappelletto e il dollaro è l'url che tu vuoi venga chiamato, ed il secondo è la sua pagina corrispondente sul webserver.
Per fare SOLO un Redirect 301, senza rewrite, da un url non più esistente, ad un url valido, puoi anche usareRedirect 301 vecchio_url nuovo_url
-
Ok,
il problema è che se metto:RewriteRule ^micropali-consolidamento-terreni.php$ /tipologia_01.php [L,R=301]
l'URL che mi visualizza il broswer in alto è
tipologia_01.php, e non
micropali-consolidamento-terreni.php.
-
Caro Isotopia,
ci stiamo incartando, mi sa che mi è sfuggito qualcosa e faccio prima a toccare con mano.
Se accetti un aiuto rigorosamente gratis et amore dei, inviami via email i parametri di accesso ftp, nel pomeriggio te lo sistemo, poi però postiamo la soluzione qui di seguito.
Trovi email e tutti i contatti in firma.;)
F.
-
Grazie,
poi sono riuscita a trovare il motico per cui mi incartavo, molto banale: non avevo rinominato fisicamente le pagine - statiche - sul server. Pertanto il browser riceveva due istruzioni opposte, e andava in loop. Pertanto la regola che ho imparato da questa lezione è questa, correggettemi se e dove sbaglio:-
- Se in un sito ci sono URL che vengono generate dinamicamente, allora è bene rinominarle dando istruzioni al browser di URlrewriting+ rediret 301 (il 301 serve per evitare i duplicati)
-
- Se invece nel sito le URL da rinominare rappresentano un percorso fisico, allora fare URL rewritin+ redirect non solo è inutile, ma anche dannoso (perchè dalla mia esperienza si crea un loop): la cosa più semplice è rinominare direttamente i file sul server, per poi applicare il redirect al fine di reindirizzare i vecchi URL indicizzati, ora non più disponibili.
Nel mio caso mi incartavo perchè mi trovavo nella seconda situazione, ma volevo applicare URL rewriting + redirect senza prima rinominare fisicamente i files.
Se qualcuno ha altre idee in merito ben venga,
Ciao e grazie per l'aiuto
-
-
Se posso condividere la mia esperienza, trovando scomodo e poco gestibile utilizzare l'htaccess per gestire l'url rewrite ho utilizzato questa strategia:
ho fatto un unica regola nell htaccess che reindirizza qualsiasi chiamata ad.un unico file index.php passando la richiesta via querystring con qualcosa del tipo index.php?request=index.html
Gestisco 301, not found, e quanto altro serve da php, in questo modo posso articolare in una struttura anche complessa (e usando magari il db) tutta la riscrittura degli url