2009-02-11 10 views
1

Je suis en train de créer une règle de réécriture qui accomplit deux choses:htaccess redirection pour tout sauf les fichiers/répertoires

  1. Redirect (www.)?domain.com à log.domain.com
  2. Que toute autre demande de répertoire ou d'un fichier sur domain.com à travers sans redirection

Ceci n'est pas un serveur Apache (c'est LiteSpeed), mais supposément, il supporte entièrement les fichiers .htaccess.

Ce fut mon coup à la règle:

RewriteEngine on 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{HTTP_HOST} ^(www\.)?domain\.com$ 
RewriteRule .* http://log.domain.com/ 

Ce qui se passe est que si je demande un fichier spécifique (comme dir/index.php) il est laissé passer, mais les demandes d'annuaire sont toujours redirigés vers connecter. domain.com. Je pensais que le $ de la deuxième RewriteCond empêcherait que cela se produise, mais cela ne semble pas être le cas.

EDIT: Juste pour des fins d'archivage, mon intention n'était pas de rediriger des répertoires/fichiers inexistants vers le journal.domaine.com puisque les utilisateurs ne devraient jamais avoir à faire cela. Cela a rendu les critères beaucoup plus simples pour la règle, que le chaos et le gombo sont tous deux arrivés avec leurs premières règles ci-dessous. Merci encore!

+0

Vous devriez avoir dit que vous ne souhaitez que le chemin d'URL «/» pour être redirigé. – Gumbo

Répondre

2
RewriteCond %{HTTP_HOST} ^(www\.)?domain\.com$ 
RewriteRule ^$ http://log.domain.com/ 
+0

Cela fonctionne pour laisser passer des répertoires ou des fichiers, mais il a maintenant cessé de rediriger (www.)? Domain.com vers log.domain.com. – justinbelcher

+0

Mmm, ouais,/étant un répertoire et tout. Donnez une chance à la version révisée ... – chaos

+0

REQUEST_FILENAME n'est jamais juste "/". (Sauf que vous utilisez quelque chose comme ceci: "RewriteRule^/") – Gumbo

0

Essayez ceci:

# skip the next rule if host is not example.com or www.example.com 
RewriteCond %{HTTP_HOST} !^(www\.)?example\.com$ 
RewriteRule^- [S] 

# redirect if requested URI does not match a regular file or directory 
# or if the requested URI path is just "/" 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d [OR] 
RewriteCond %{REQUEST_URI} =/ 
RewriteRule^http://log.example.com/ 
+0

Merci Gumbo, je crois que votre première règle ferait l'affaire aussi bien. – justinbelcher

Questions connexes