2009-07-21 16 views
14

Ho un sito web dire http://www.example.com/ nella radice del mio sito, ho aggiunto file .htaccess per reindirizzare qualsiasi richiesta di http://example.com/ per http://www.example.com/Come reindirizzare gli URL non www a www utilizzando htaccess?

Recentemente ho creato una nuova sezione "Video" quindi l'URL per i video è http://www.example.com/videos/ . In questa cartella video ho un altro file htaccess che sta eseguendo la riscrittura per le voci video. Quando cerco di accedere a http://example.com/videos/, non mi reindirizza a http://www.example.com/videos/

Penso che .htacces non stia ereditando le regole precedenti dalla directory padre. Qualcuno può dirmi quale può essere la regola che posso aggiungere nel file .htaccess di/videos/folder in modo che qualsiasi richiesta di http://example.com/videos/ venga reindirizzata all'URL http://www.example.com/videos/.

risposta

9

Penso che potrebbe essere semplicemente che la regola esistente è troppo rigida e non viene attivata nella sottodirectory a causa di ciò. Qualcosa del genere dovrebbe funzionare a livello di sito:

RewriteEngine on 
RewriteBase/

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

Dove dovrei inserire questa regola, all'interno di .htaccess di root genitore o nella cartella .htaccess della cartella video? – Prashant

+0

Dovrebbe funzionare nella directory principale. Ho qualcosa di simile nella mia radice .htaccess e funziona per le sottodirectory. –

43

Si tratta di una soluzione più generica, in quanto può essere utilizzato con qualsiasi nome di dominio senza dover specificare il nome di dominio specifico per ogni .htaccess:

# Redirect non-www to www: 
RewriteCond %{HTTP_HOST} !^www\. [NC] 
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L] 

il contrario è anche possibile (www a non www):

# Redirect www to non-www 
RewriteCond %{HTTP_HOST} ^www\.(.*) [NC] 
RewriteRule ^(.*)$ http://%1/$1 [R=301,L] 
+2

+1 per www per codice generico non www. – Debiprasad

+2

Sono in Magento e questo codice reindirizza //mywebsite.com/some/url a //www.mywebsite.com/index.php. C'è un ulteriore passaggio qui per mantenere l'URL persistente? –

+1

Penso che sia necessario rimuovere uno "/" dalla regola vicino a $ 1: RewriteRule^(. *) $ Http: //www.% {HTTP_HOST} $ 1 [R = 301, L] – webmaster

1

si tratta di migliori soluzioni per reindirizzare non www a URL www usando .htaccess. utilizzando questo codice nel file htaccess e controllare l'URL.

Options +FollowSymlinks 
RewriteEngine on 
rewritecond %{http_host} ^mydomain.com [nc] 
rewriterule ^(.*)$ http://www.mydomain.com/$1 [r=301,nc] 
0

Consiglio a tutti di rimanere con il metodo di sotto di essa reindirizzerà solo il dominio principale non solo qualsiasi altro sub-directory o sottodominio nel vostro ospite.

# Redirect non-www to www only for main domain 
# recommended if you have any/some sub-domain(s) 
RewriteEngine on 
RewriteBase/

# Replace yoursite and .tld respectively 
RewriteCond %{HTTP_HOST} ^yoursite\.tld$ 
# Replace yoursite.com 
RewriteRule ^(.*) http://www.yoursite.com/$1 [R=301] 

Utilizzare questo metodo se si è veramente sicuri e spero che che non potrà mai utilizzare sub-dominio con il tuo sito web vale a dire subdomain.yoursite.com o qualsiasi altra cosa. Allora sei libero di usare il metodo qui sotto. "Dire Anche in questo caso assicurarsi che se si vuole veramente utilizzare questo metodo"

# Redirect all non-www to www including subdomain(s) 
RewriteCond %{HTTP_HOST} !^www\. [NC] 
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L] 

Il metodo seguito reindirizzerà tutto url www a non www inclusi i sottodomini, anche se non è possibile utilizzare www.subdirecty.yoursite.com ti verrà richiesto un errore con 500.

# Redirect www to non-www 
RewriteCond %{HTTP_HOST} ^www\.(.*) [NC] 
RewriteRule ^(.*)$ http://%1/$1 [R=301,L] 
Problemi correlati