2013-04-04 12 views
5

Sto provando a reindirizzare usando .htaccess nel modo seguente. Non sono così familiare con .htaccess, quindi non sono sicuro che possa essere fatto. Inoltre, non so se come intendo farlo seguire le migliori pratiche per SEO.Come reindirizzare i sottodomini che non esistono?

www.domain.com    > domain.com 301 

ks.domain.com     > kansas.domain.com 301 

ia.domain.com     > iowa.domain.com 301 

domain.com/sites    > domain.com 301 

domain.com/sites/iowa   > iowa.domain.com 301 

nonexistent.domain.com  > domain.com 302 

domain.com/sites/nonexistent > domain.com 302 

La mia più grande domanda è se riesco a rilevare un sottodominio inesistente e il reindirizzamento. Mi piacerebbe vedere come tutto ciò è stato realizzato.

+2

@ Johnsonmk2 Qual è poco chiaro circa la risposta accettata? – Sumurai8

+0

Suppongo che per "non esiste" in realtà intendi che i sottodomini esistono ma non ci sono siti web corrispondenti per loro, corretto? –

+0

Sì, Alexis. Ciò che si intende è se io inoltro tutti '* .domain.com' a' domain.com/* ', rilevi se quella cartella (sito Web) non esiste, quindi reindirizza a' domain.com'. La risposta accettata era abbastanza dettagliata su come farlo. – TheHerk

risposta

7

In primo luogo, è necessario aggiungere sottodomini di caratteri jolly creando un sottodominio con un * come nome, solo se l'host Web consente di farlo. E questo deve essere nella vostra .htaccess, cercare di provare a vedere se funziona:

Options +FollowSymlinks 
RewriteEngine on 

RewriteCond %{HTTP_HOST} ^www\.domain\.com 
RewriteRule ^(.*)$ http://domain.com/$1 [R=301] 

RewriteCond %{HTTP_HOST} ^ks\.domain\.com 
RewriteRule ^(.*)$ http://kansas.domain.com/$1 [R=301] 

RewriteCond %{HTTP_HOST} ^ia\.domain\.com 
RewriteRule ^(.*)$ http://iowa.domain.com/$1 [R=301] 

RewriteCond %{HTTP_HOST} ^domain\.com 
RewriteCond %{REQUEST_URI} ^/sites/?$ 
RewriteRule ^(.*)/[R=301] 

RewriteCond %{HTTP_HOST} ^domain\.com 
RewriteCond %{REQUEST_URI} ^/sites/iowa/?$ 
RewriteRule ^(.*) http://iowa.domain.com/ [R=301] 

RewriteCond %{HTTP_HOST} ([a-z0-9-]+)\.domain\.com$ 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*) http://domain.com/ [R=302] 

RewriteCond %{HTTP_HOST} ^domain\.com 
RewriteCond %{REQUEST_URI} ^/sites/([a-z0-9-_]+)/? 
RewriteCond %{REQUEST_FILENAME} !-s 
RewriteRule ^(.*) http://domain.com/ [R=302] 

Basta usare -f per verificare se esiste un file richiesto ed è un file regolare, -s se esiste e ha una dimensione di file maggiore di 0 e -d per verificare se esiste ed è una directory.

+1

Apprezzo il tuo aiuto. Mi ha fatto fare molto per impostare il mio .htaccess. Vorrei alzare la voce per rispondere se potessi. Forse un giorno. – TheHerk

+1

@TheHerk Funzionava? – 5ervant

+2

Sì. Ho finito per farlo in modo un po 'diverso perché la mia struttura è cambiata, ma le tue informazioni mi hanno aiutato a capire cosa dovevo fare. – TheHerk

0

Se si desidera sottodomini specifici che non esistono, sarà sufficiente crearli e quindi reindirizzare.

Per individuare tutti i sottodomini errati, ad esempio digitare per errore metaa.stackoverlow.com, utilizzare un carattere jolly: *.stackoverflow.com. In cpanel, questo richiede semplicemente spuntare una casella di controllo che chiede 'make jolly?' o simili. Per modificare direttamente .htaccess, inserisci * al posto di ogni sottodominio specifico.

Si noti che questo vale anche per tutte le directory:

subdomain.site.com/*

*.site.com/dir

*.site.com/*

Problemi correlati