2009-07-21 10 views
14

J'ai un site dire http://www.example.com/ à la racine de mon site, j'ai ajouté le fichier .htaccess pour rediriger toute demande de http://example.com/ à http://www.example.com/Comment rediriger un non-www vers www en utilisant htaccess?

Récemment, j'ai créé une nouvelle section « Vidéos » si l'URL de vidéos est http://www.example.com/videos/ . Dans ce dossier vidéo, j'ai un autre fichier htaccess qui effectue la réécriture pour les entrées vidéo. Lorsque j'essaie d'accéder à http://example.com/videos/ alors il ne me redirige pas vers http://www.example.com/videos/

Je pense que .htacces n'hérite pas des règles précédentes du répertoire parent. Quelqu'un peut-il s'il vous plaît me dire quelle peut être la règle que je peux ajouter dans le fichier .htaccess de/videos/dossier de sorte que toute demande de http://example.com/videos/ sera redirigé vers http://www.example.com/videos/ URL.

Répondre

9

Je pense qu'il se peut que votre règle existante soit trop stricte et ne soit pas déclenchée dans votre sous-répertoire à cause de cela. Quelque chose comme cela devrait fonctionner l'ensemble du site:

RewriteEngine on 
RewriteBase/

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

Où devrais-je mettre cette règle, à l'intérieur du fichier .htaccess de la racine parente ou dans le dossier .htaccess du dossier des vidéos? – Prashant

+0

Cela devrait fonctionner dans le répertoire racine. J'ai quelque chose de similaire dans mon .htaccess racine et cela fonctionne pour les sous-répertoires. –

43

C'est une solution plus générique, car il peut être utilisé avec un nom de domaine sans avoir à spécifier le nom de domaine spécifique dans chaque .htaccess:

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

Le contraire est également possible (www non-www):

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

+1 pour www à un code générique non-www. – Debiprasad

+2

Je suis dans Magento et ce code redirige //mywebsite.com/some/url vers //www.mywebsite.com/index.php. Y a-t-il une étape supplémentaire ici pour garder l'URL persistante? –

+1

Je pense que vous devez supprimer un "/" de la règle près de $ 1: RewriteRule^(. *) $ Http: //www.% {HTTP_HOST} $ 1 [R = 301, L] – webmaster

1

Il est préférable de solutions pour redirect non www à l'aide de la htaccess URL de www. en utilisant ce code dans le fichier htaccess et vérifiez l'URL.

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

Je recommande à tous de rester avec la méthode ci-dessous, il ne rediriger le domaine principal que aucun autre sous-répertoire ou sous-domaine dans votre hôte.

# 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] 

Utilisez cette méthode si vous êtes vraiment sûr et j'espère que vous que vous ne serez jamais utiliser sous-domaine avec votre site web à savoir subdomain.yoursite.com ou autre. Que vous êtes invités à utiliser la méthode ci-dessous. « Dire Encore une fois assurez-vous que si vous voulez vraiment utiliser cette méthode »

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

La méthode ci-dessous redirigera toutes les URL www non-www y compris sous-domaines vos bien que vous ne pouvez pas utiliser www.subdirecty.yoursite.com il va vous demander une erreur avec 500.

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