2013-11-21 9 views
5

Questa domanda probabilmente ha avuto risposta, ma non riesco a trovare una soluzione adeguata..htaccess 301 reindirizza tutte le pagine all'interno della directory in altro dominio senza querystring

Vorrei redirect 301 tutte le pagine come quelle qui sotto

http://www.domain1.com/nl/dolor/sith 
http://www.domain1.com/nl/loremipsum 
http://www.domain1.com/nl 

in un nuovo dominio, e allo stesso tempo cadere la querystring, in questo modo:

http://www.domain2.nl 

Tutte le altre pagine , ad esempio http://www.domain1.com/be/loremipsum dovrebbe ancora funzionare. Solo quelli con suffisso nl dovrebbero reindirizzare.

Si prega di notare che queste non sono directory reali: nel mio file .htaccess ho le seguenti dichiarazioni di riscrivere la mia stringa di query:

# Personal Rewrites 
RewriteRule ^([A-Za-z0-9-_]+)/?$                       index.php?lid=$1          [L] 
RewriteRule ^([A-Za-z0-9-_]+)/([A-Za-z0-9-_]+)/?$                   index.php?lid=$1&pl1=$2         [L] 
RewriteRule ^([A-Za-z0-9-_]+)/([A-Za-z0-9-_]+)/([A-Za-z0-9-_]+)/?$               index.php?lid=$1&pl1=$2&pl2=$3       [L] 
RewriteRule ^([A-Za-z0-9-_]+)/([A-Za-z0-9-_]+)/([A-Za-z0-9-_]+)/([A-Za-z0-9-_]+)/?$           index.php?lid=$1&pl1=$2&pl2=$3&pl3=$4     [L] 
RewriteRule ^([A-Za-z0-9-_]+)/([A-Za-z0-9-_]+)/([A-Za-z0-9-_]+)/([A-Za-z0-9-_]+)/([A-Za-z0-9-_]+)/?$      index.php?lid=$1&pl1=$2&pl2=$3&pl3=$4&pl4=$5   [L] 
RewriteRule ^([A-Za-z0-9-_]+)/([A-Za-z0-9-_]+)/([A-Za-z0-9-_]+)/([A-Za-z0-9-_]+)/([A-Za-z0-9-_]+)/([A-Za-z0-9-_]+)/?$  index.php?lid=$1&pl1=$2&pl2=$3&pl3=$4&pl4=$5&pl5=$6  [L] 

Ho provato la riscrittura tradizionale, ma questo invia anche la querystring:

Redirect 301 /nl http://www.domain2.nl 

Altre tecniche non sembrano funzionare. E io non sono bravo a regex ...

Qualcuno potrebbe dare o collegare a una soluzione di montaggio? Grazie in anticipo

risposta

6

Aggiungi questa regola come la prima regola nella vostra DOCUMENT_ROOT/.htaccess:

RewriteRule ^nl(/.*|)$ http://www.domain2.nl/? [L,R=301,NC] 

Un altro suggerimento su regex:

Si dovrebbe cambiare la vostra regex da usare: [\w-] invece di [A-Za-z0-9-_] dal:

  1. Hyphen dovrebbe essere il primo o l'ultimo characcter in classe del personaggio per evitare scappavano
  2. \w è equivalente di [a-zA-Z0-9_]
+0

BOOM! Hai vinto! Funziona come un fascino. Inoltre, ho sostituito '[A-Za-z0-9 -_]' con '[\ w-]' secondo il tuo suggerimento. Molte grazie! Presto farò un'altra domanda su come usare le costruzioni come '/? Return = link' (quindi una querystring secondaria) in combinazione con la costruzione della riscrittura visualizzata in questo caso. Forse potresti aiutare anche lì? :-) – maartenmachiels

+1

Prego, felice che abbia funzionato.Per la nuova domanda si prega di lasciare il link della domanda nei commenti qui e sicuramente cercherò di migliorare il mio livello. – anubhava

+1

Scusa, ho dimenticato di darti la mia taglia :-) – maartenmachiels

4

È sufficiente aggiungere uno ? alla fine del target. Può farlo con mod_alias così:

Redirect 301 /nl http://www.domain2.nl? 

tuttavia, vedrete un randagio ? nella barra degli indirizzi del browser.

Se non si desidera che il randagio ?, dovrete attaccare con mod_rewrite:

RewriteRule ^nl/(.*)$ http://www.domain2.nl/$1? [L,R=301] 

(si vorrà che prima una delle riscritture che già avete

.
Problemi correlati