2009-04-23 7 views
4

Je voudrais rediriger.htaccess récrire sans www et redirigez le sous-répertoire

  • www.example.com/* à example.com/*

Et en même temps redirigent

  • example.com/* à example.com/forum/*

Mais j'ai aussi /wiki/ et /blog/ et /style/, donc je ne veux pas pour rediriger

  • example.com/style/* à example.com/forum/style/*

C'est ce que j'ai en ce moment, ce qui est ne fonctionne pas très correctement:

Options +FollowSymLinks 
RewriteEngine On 

RewriteBase/

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

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

Clarification: ma question peut être posée de manière plus simple.

Je voudrais rediriger un vide REQUEST_URI ou /, ou un fichier inexistant que si elle est dans le répertoire racine à /forum/.

+0

C'est ce que j'ai en ce moment, ce qui ne fonctionne pas tout à fait correctement: (. *) options + FollowSymLinks RewriteEngine On RewriteBase/ RewriteCond% {HTTP_HOST}^exemple \ .com $ [NC] RewriteRule^$ h ttp:! //example.com/$1 [R = 301, L] RewriteCond% de {REQUEST_FILENAME} -f RewriteCond% {} de REQUEST_FILENAME -d RewriteCond% {REQUEST_URI} ^/forum/ RewriteRule^(. *) $ forum/$ 1 [R = 301, L] –

+0

Cela n'a jamais été répondu. Avez-vous déjà trouvé un moyen de rediriger vers un forum sans vous retrouver sur www.example.com au lieu d'un exemple?com? –

Répondre

0

Je dirais que cela devrait fonctionner.

RewriteEngine on 
RewriteRule ^forum/(.*)$ forum/$1 [L] 
RewriteRule ^wiki/(.*)$ wiki/$1 [L] 
RewriteRule ^blog/(.*)$ blog/$1 [L] 
RewriteRule ^style/(.*)$ style/$1 [L] 

RewriteRule ^(.*)$ forum/$1 [L] 

RewriteCond %{HTTP_HOST} ^www.example\.com$ 
RewriteRule ^(.*)$ http://example.com/$1 
2

Essayez ceci:

RewriteEngine On 

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

RewriteCond %{REQUEST_URI} !^/(wiki|blog|style|forum) 
RewriteRule ^(.*)$ http://www.example.com/forum/$1 [R=301,QSA,L] 
+0

n'est pas un moyen sans spécifier tous les sous-répertoires? Je n'en ai actuellement que 4, mais il y en aura probablement plus tard ... Merci pour votre réponse! –

1

J'utiliseraient ces règles:

# redirect www.example.com to example.com 
RewriteCond %{HTTP_HOST} ^www\.example\.com$ 
RewriteRule^http://example.com%{REQUEST_URI} [L,R=301] 

# prefix everything but /forum/, /wiki/, /blog/, /style/ with /forum/ and rediret to it 
RewriteRule !^(forum|wiki|blog|style)/ /forum%{REQUEST_URI} [L,R=301] 

La deuxième règle pourrait en outre être remplacé par celui-ci pour vérifier l'existence du premier segment de chemin pour chaque demande.

# check if first segment of requested URI path is either missing 
RewriteCond $0 ^$ [OR] 
# or cannot be mapped to an existing directory 
RewriteCond %{DOCUMENT_ROOT}$0/ !-d 
RewriteRule ^[^/]* /forum%{REQUEST_URI} [L,R=301] 
0

Je n'ai pas la réponse à tout, mais pour votre www/www ne problème que vous pouvez essayer ceci:

# Enforce www 
# If you have subdomains, you can add them to 
# the list using the "|" (OR) regex operator 
RewriteCond %{HTTP_HOST} !^(www|subdomain) [NC] 
RewriteRule ^(.*)$ /exemple/$1 [L,R=301] 

# Enforce NO www 
RewriteCond %{HTTP_HOST} ^www [NC] 
RewriteRule ^(.*)$ http://exemple.com/$1 [L,R=301] 
Questions connexes