2010-07-10 6 views
0

Hé les gars! Pouvez-vous s'il vous plaît me conseiller comment modifier mon .htaccess afin queComment rediriger en permanence (301) via .htaccess?

http://example.com (non-www without trailing slash) 
http://example.com/ (non-www with trailing slash) 
http://www.example.com (www without trailing slash) 

seront redirigés de façon permanente (301) à

http://www.example.com/ (www with trailing slash)?

En outre, il existe des règles générales à appliquer ce "comportement" à des sous-dossiers

http://example.com/subfolder 
http://example.com/subfolder/ 
http://www.example.com/subfolder 
=> http://www.example.com/subfolder/ 

et sous-domaines (ici) inverse

http://www.subdomain.example.com 
http://www.subdomain.example.com/ 
http://subdomain.example.com 
=> http://subdomain.example.com/ 

aussi? Comme je suis complètement nouveau à ce sujet, s'il vous plaît soyez gentil ... =)

Merci! Nel

+0

http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html –

+0

Merci Ignacio! J'ai déjà essayé le doc, mais je dois avouer que la plupart me dépasse ... =) Je suis à la recherche d'une solution "one-fits-it-all" qui rend encore plus difficile ... vraiment besoin de vous, pros! – Nelly

+0

Peu importe, j'ai mal compris votre question. Vous ne voulez pas de redirection, vous voulez réécrire comme les autres réponses discutées. Supprimé ma réponse erronée. –

Répondre

1

Ces trois règles devraient faire toutes les choses que vous voulez:

RewriteEngine On 

# Rewrite www.subdomain.example.com to subdomain.example.com 
RewriteCond %{HTTP_HOST} ^www\.(.*)\.example\.com 
RewriteRule (.*) http://%1.example.com/$1 [L,R=301] 

# Rewrite example.com to www.example.com 
RewriteCond %{HTTP_HOST} ^example\.com 
RewriteRule (.*) http://www.example.com/$1 [L,R=301] 

# Add trailing slash to all URIs without one 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_URI} !(.*)/$ 
RewriteRule ^(.*)$ $1/ [L,R=301] 
+0

Hey vous! =) Je pense que c'est ce que je cherche - merci beaucoup! Devrais-je ajouter "RewriteEngine On" et "RewriteBase /" ici comme Eric cité? – Nelly

+0

Seulement RewriteEngine Sur, je crois. (Je vais aussi éditer ma réponse) – You

+0

Merci encore, je vais essayer dès que possible. – Nelly

0

Je pense que cela va faire l'affaire:

RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_URI} !(.*)/$ 
RewriteRule ^(.*)$ $1/ [L,R=301] 
2

La directive DirectorySlashes prend en charge le problème de slash.

Le non-www www à redirect est:

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