2010-12-15 64 views
1

J'ai une réécriture qui modifie mon DocumentRoot de /public_html à /public_html/MAIN et cela fonctionne très bien.instructions .htaccess conflit "DocumentRoot change" + "toujours afficher le sous-domaine"

RewriteRule ^$ /MAIN/ [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} !^/MAIN/ 
RewriteRule ^(.*)$ /MAIN/$1 

maintenant Si j'essaie d'ajouter l'instruction suivante pour afficher toujours le sous-domaine www, il ne se comporte correctement ...

RewriteCond %{http_host} ^domain.com [nc] 
RewriteRule ^(.*)$ http://www.domain.com/$1 [r=301,nc] 

Visiting http://domain.com/ provoque une ré-écriture à http://www.domain.com/MAIN/ qui est pas ce que je vouloir. Je ne veux pas que le sous-répertoire MAIN soit visible.

Que manque-t-il?

Répondre

3

Le modèle ^(.*)$ capture l'URI en cours, peu importe s'il se trouve dans la barre d'adresse ou s'il s'agit d'une redirection interne. L'une de ces solutions devrait fonctionner:

  • Mettre la redirection de sous-domaine premier
  • Remplacer $1 avec une variable, par exemple %{REQUEST_URI}
+0

Merci @ Álvaro en remplaçant «$ 1» par '% {REQUEST_URI}' a fait l'affaire! – filip