- Home
- Categorie
- Digital Marketing
- Posizionamento Nei Motori di Ricerca
- Redirect 301 va in conflitto con il Rewrite di Wordpress??
-
Per fare redirect di URL con querystring non puoi usare la direttiva "redirect 301", ma devi usare delle RewriteRule e RewriteCond.
-
Ah, ecco.
Però ottengo lo stesso risultato del redirect 301?
L'obiettivo prefissato è quello di non perdere (completamente) i posizionamenti e i rank ottenuti dal vecchio sito; con questo sistema riesco ad ottenere la stessa cosa?Ho comunque provato a fare:
RewriteRule ^nomepagina/$ /index.php?page=pages&pid=588
Ma non funziona...
-
Devi fare una cosa simile.
Per farlo diventare un 301 basta aggiungere tra parentesi quadre R=301.
RewriteEngine On RewriteCond %{REQUEST_URI} ^/paginetta\.php$ RewriteCond %{QUERY_STRING} ^p=([0-9]*)$ RewriteRule ^(.*)$ http://www.miosito.com/paginetta/%1 [R=301,L]
-
Buongiorno Juanin,
innanzitutto **grazie **per l'aiuto.Ho provato il tuo codice, ma non funziona.
Ho anche provato ad eliminare quello di Wordpress, giusto per test... ma non va.Le tue istruzioni dicono (correggimi se sbaglio):
Se la pagina è paginetta.php
e ci sono variabili, (nel caso scritto da te p=un-numero
Allora riscrivi questa pagina in -->url-nuovoQuindi, se la logica è corretta, io dovrei scrivere:
RewriteCond %{REQUEST_URI} ^/index.php$
RewriteCond %{QUERY_STRING} ^page=pages&pid=([0-9])$
RewriteRule ^(.)$ dominio/paginetta/%1 [R=301,L]Però così - appunto - non funziona.
Cosa sbaglio?
-
Potrebbe essere che il tuo host non ti consente di farlo a livello di .htaccess quindi dovresti provare nel virtualhost.
-
Il sito è su Aruba, hosting (ovviamente ) Linux.
Strano, il file .htaccess di Wordpress funziona egregiamente..Però la logica che ho descritto sopra, e l'esempio modificato, è corretto?
Cioè, la url "vecchia" ha questa seguenza (strana, tra l'altro) di variabili, page=pages&pid=*numero .
*Nella RewriteCond %{QUERY_STRING} è corretto inserirle tutte?L'altro mio problema è il seguente:
Ho circa 60 pagine da re-indirizzare. Ovviamente ognuna ad una pagina.
Quindi, invece di usare ([0-9]*) dovrei usare un numero preciso (es: 45) che dovrò redirezionare ad una url precisa (esempio: /fantasia/)Basterà sostituire la parte della espressione regolare ([0-9]*) con il numero?
-
Forse ci siamo:
Ho scoperto che rischia di essere un problema di forma:
Praticamente su Aruba per ogni "/" bisogna anteporre un ""Ora però ho un piccolissimo problema, poi - lo giuro - non rompo più.
La direttiva mi riscrive l'url in questo modo:
dominio / nomepagina / variabili
Come faccio a non fargli scrivere più nessuna variabile dopo il " nomepagina/ " ?
-
No nel query string non puoi accodarle.
Devi usare degli operatori logici o specificare una ulteriore QUERY_STRING
-
Togli il match con la variabile che è rappresentata dal %1.
-
Ed è quello che ho pensato subito io...
togliere il %1.
Ma le mostra lo stesso
-
Di che variabili parli?
-
Parlo di questo:
la url che devo trasformare è
index.php**?page=pages&pid=588**in
/nomepagina/
esattamente così.
Con le istruzioni di cui stiamo parlando il mod_rewrite scrive:
/nomepagina/?page=pages&pid=588
Io ho provato a togliere da
RewriteRule ^(.*)$ dominio/paginetta/%1 [R=301,L]
il **%1ma il risultato non cambia, cioè continua a scrivermi /nomepagina/?page=pages&pid=588
**
-
Nella condizione sulle querystring hai utilizzato un operatore logico che dice se è questo + quello?
-
Io ho questa situazione:
RewriteCond %{REQUEST_URI} ^/index.php$
RewriteCond %{QUERY_STRING} ^page=pages&pid=(588)$
RewriteRule ^(.*)$ dominio/nomepagina/ [R=301,L]In questa situazione la riscrittura è
/nomepagina/**?page=pages&pid=588
**
-
Non puoi matchare 2 condizioni come ti ho detto sopra
RewriteCond %{QUERY_STRING} ^page=pages&pid=(588)$
Devi usare un operatore logico che divida le due variabili divise da &